sha*_*pta 2 java android android-fragments android-alertdialog android-studio
我无法弄清楚为什么调用getSupportFragmentManager()时我的应用程序崩溃。我在其他应用程序中使用了类似的代码来创建警报对话框,而没有任何问题。请帮忙!
DialogFragment df = new DialogFragment(){
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
View view = getActivity().getLayoutInflater().inflate(R.layout.addincome,null);
builder.setView(view);
//capture
final EditText amountEditText=(EditText)view.findViewById(R.id.edit_amount);
final EditText descriptionEditText=(EditText)view.findViewById(R.id.edit_description);
builder.setNegativeButton(android.R.string.cancel,null);
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
newIncome.setAmount(Double.parseDouble(amountEditText.getText().toString()));
newIncome.setDescription(descriptionEditText.getText().toString());
user.incomes.add(newIncome);
HashMap<String,User> modified = new HashMap<>();
modified.put(uid,user);
rootref.setValue(modified);
}
});
return builder.create();
}
};
df.show(getSupportFragmentManager(),"addIncome");
Run Code Online (Sandbox Code Playgroud)
您DialogFragment是一个匿名类,在Java中,匿名类只能由父类实例化:new DialogFragment()实际上是this.new DialogFragment()。显然,当FragmentManager尝试DialogFragment在配置更改时重新创建您的文件时,它就不会,因为它无权访问父类的实例。解决方案是声明一个的static子类DialogFragment,或者声明的一个顶级子类DialogFragment,然后使用它代替匿名类。
| 归档时间: |
|
| 查看次数: |
5495 次 |
| 最近记录: |