I have a fragment in which I need to show a custom dialog.
Please check out my code below.
public class MyFragment extends Fragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.send_layout, container, false);
TextView txtView = (TextView) rootView.findViewById(R.id.tv);
txtView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openDialog();
}
});
return rootView;
}
public void openDialog(){
AppCompatDialog dialog = new AppCompatDialog(getContext(), R.style.package_types__dialog);
dialog.setContentView(R.layout.package_types_dialog);
dialog.show();
}
}
When removing the line:
dialog.setContentView(R.layout.package_types_dialog);
there is no error, but if I use the same the following error is throwing:
FATAL EXCEPTION: main
10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroidRuntime: Process: in.edelworks.pickedup, PID: 23866
10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroidRuntime: android.util.AndroidRuntimeException: Window feature must be requested before adding content
10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroidRuntime: at android.support.v7.app.AppCompatDelegateImplV7.throwFeatureRequestIfSubDecorInstalled(AppCompatDelegateImplV7.java:1584)
10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroidRuntime: at android.support.v7.app.AppCompatDelegateImplV7.requestWindowFeature(AppCompatDelegateImplV7.java:509)
10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroidRuntime: at android.support.v7.app.AppCompatDelegateImplBase.onCreate(AppCompatDelegateImplBase.java:117)
10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroidRuntime: at android.support.v7.app.AppCompatDelegateImplV7.onCreate(AppCompatDelegateImplV7.java:148)
10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroidRuntime: at android.support.v7.app.AppCompatDialog.onCreate(AppCompatDialog.java:60)
10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroidRuntime: at android.app.Dialog.dispatchOnCreate(Dialog.java:361)
10-20 19:42:57.489 23866-23866/in.edelworks.pickedup E/AndroidRuntime: at android.app.Dialog.show(Dialog.java:262)
I've implemented and tried many alternatives for your kind of situation, It's working really fine, so that I couldn't get a chance to review your error. But what I can suggest you is replace AppCompatDialog with AlertDialog.Builder which is a class of android.support.v7.app.
Replace this codes
public void openDialog(){
AppCompatDialog dialog = new AppCompatDialog(getContext(), R.style.package_types__dialog);
dialog.setContentView(R.layout.package_types_dialog);
dialog.show();
}
with
public void openDialog(){
AlertDialog.Builder dialog = new AlertDialog.Builder(getContext(),R.style.package_types__dialog);
dialog.setView(R.layout.package_types_dialog);
}
Note :
And if you have any classes that handles the dialog events then extend DialogFragment of android.support.v4.app.DialogFragment. and don't forget to override onCreateDialog method. The full class will look something like this
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
/**
* Created by Shreekrishna on 2/29/2016.
*/
public class PackageTypesDialog extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return super.onCreateDialog(savedInstanceState);
}
}
This will probably solve your issue !
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With