我正在获取 java.lang.IllegalStateException:当我尝试从活动中显示对话碎片时,活动已被销毁。。
我在stackoverflow中看到了很多解决方案,但那些并没有解决我的问题 在以下行中出现错误
dialogfragment.show(ft,“dialog”);
代码如下。
class MyDialog extends DialogFragment {
int mNum = 0;
static MyDialog newInstance(){
return new MyDialog();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//dialog view
Log.i("MyDialog", "onCreateview");
View v = inflater.inflate(R.layout.dialog, container, false);
TextView v1 = (TextView) v.findViewById(R.id.text);
v1.setText("dialog shown");
return v;
}
}
public class DialogActivity extends FragmentActivity{
DialogFragment dialogfragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
void show(){
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment f = getSupportFragmentManager().findFragmentByTag("dialog");
if(f != null){
ft.remove(f);
}
dialogfragment = MyDialog.newInstance();
dialogfragment.setCancelable(false);
dialogfragment.show(ft, "dialog");
dialogfragment.setStyle(DialogFragment.STYLE_NO_TITLE, android.R.style.Theme_Holo_Light_Dialog);
}
}
我将这个方法从Activity类调用为
DialogActivity dl = new DialogActivity();
dl.show();
错误日志
07-08 14:54:09.565:W / System.err(10390):java.lang.IllegalStateException:活动已被破坏 07-08 14:54:09.565:W / System.err(10390):在android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1314) 07-08 14:54:09.565:W / System.err(10390):在android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:541) 07-08 14:54:09.565:W / System.err(10390):在android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:525) 07-08 14:54:09.565:W / System.err(10390):在android.support.v4.app.DialogFragment.show(DialogFragment.java:138)
我错过了部分代码。现在添加了它
编辑:
还有另一种方法可以调用DialogActivity中的show()方法 另一个Activity类??
答案 0 :(得分:2)
DialogActivity dl = new DialogActivity();
dl.show();
您无法使用new运算符设置Activity
。 Activity
有自己的生命周期,您应该使用Intent
与startActivity
一起开始Activity
。您可能应该扩展DialogFragment
而不是FragmentActivity