Java – I can’t create a default constructor from a class that extends dialogfragment, and I’ve created my own custom constructor
I'm confused about the error message about the default constructor
I have two classes mainactivity and resultdialog Some methods in mainactivity create a new dialog box and pass 2strings to the custom constructor in resultdialog
Resultdialog extends dialogfragment So I defined my own constructor, but when there was an error, I just created a parameterless constructor, but it is still not allowed to do so
I have searched for abit on so, but the answer is a little explanatory. Screen rotation may break and recreate the screen using the default constructor, but I still can't answer how to solve this problem
Someone please help me, I'm a little confused Part of my resultdialog class:
public class ResultDialog extends DialogFragment {
private String message;//to hold the message to be displayed
private String title;//for alert dialog title
//constructor for the dialog passing along message to be displayed in the alert dialog
public ResultDialog(String message,String title){
this.message = message;
this.title = title;
}
public ResultDialog(){
//default constructor
}
Solution
You can use newinstance Check document
http://developer.android.com/reference/android/app/Fragment.html
And check it
Why do I want to avoid non-default constructors in fragments?
ResultDialog rd = ResultDialog.newInstance("message","title");
then
public static ResultDialog newInstance(String message,String title) {
ResultDialog f = new ResultDialog();
Bundle args = new Bundle();
args.putString("message",message);
args.putString("title",title);
f.setArguments(args);
return f;
}
And use getarguments () to retrieve the value
String message = getArguments().getString("message");
String title = getArguments().getString("title");
getArguments()
public final Bundle getArguments () Added in API level 11 Return the arguments supplied when the fragment was instantiated,if any.
