我的片段类是
public class GetFragmentManager extends FragmentActivity {
public FragmentManager getSupportFragmentMethod(){
FragmentManager s = getSupportFragmentManager();
return s;
}
}
我需要getSupportFragmentManager
方法(我可以从FragmentActivity类中获取),所以我创建了这个扩展FragmentActivity
类的类。
我的活动代码(这扩展了Activity类)是
public void showFileChooser(View v){
DialogFragment a =new FireMissilesDialogFragment();
a.show(getSupportFragmentManager1(), "missiles");
}
private android.support.v4.app.FragmentManager getSupportFragmentManager1() {
android.support.v4.app.FragmentManager ab = new GetFragmentManager().getSupportFragmentMethod();
return ab;
}
错误陈述是活动正在销毁。
请允许任何人在这里找到问题。我花了很多时间在这上面。谢谢大家的时间。
答案 0 :(得分:2)
抱歉浪费你所有的时间。
似乎Activity类有一个方法getFragmentManager(),我当时知道,但是没有正确运行,因为我在代码行中引用类(特别是片段类)时出错了。此外,每次导入片段时,我都导入的不是app.v4支持版本,而是主要版本。
主要活动类扩展了Activity类
public class Profile extends Activity implements View.OnTouchListener{
在同一个类上编写了开放片段方法
public void showFileChooser(View v){
a =new FireMissilesDialogFragment();
a.show(getFragmentManager(),"text");
}
和FireMissilesDialogFragment如下。
public class FireMissilesDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage("dialog_fire_missiles")
.setPositiveButton("fire", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// FIRE ZE MISSILES!
}
})
.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
// Create the AlertDialog object and return it
return builder.create();
}
}
更改的内容是每个app.v4支持版本导入我没有导入v4版本但是常规版本。即使对话框工作,清单文件也会显示错误" java.lang.IllegalStateException:您需要在此活动中使用Theme.AppCompat主题(或后代)"
无论如何,感谢大家的时间。我将赞成这两个答案,因为它们在这一点上很有用。
答案 1 :(得分:1)
您无法像实例化新的GetFragmentManager()
那样实例化一个活动,将已经实例化的活动传递给该方法。
例如,您的主要活动(当前在屏幕上的活动)扩展片段管理器,然后在您调用this.getSupportFragmentManager()
答案 2 :(得分:1)
首先,如果要使用活动来启动片段,首先需要传递onCreate阈值,然后创建片段:
public class MyActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle saveInstanceState){
super.oncCreate(saveInstanceState);
//create your file chooser, etc.
DialogFragment a =new FireMissilesDialogFragment();
a.show(getSupportFragmentManager(), "missiles");
//getSupportManager exists in the activity
}
}
您也可以随时在onResume,onStart中创建它。
修改强>
对于appcompat,您可以查看以下内容以了解问题:
Update your style resources
对于相关的堆栈帖子:
You need to use a Theme.AppCompat theme (or descendant) with this activity
您可以理解,您需要在活动中定义主题或
在您的申请中:
android:theme="@style/Theme.AppCompat" >
答案 3 :(得分:0)
只需扩展AppCompatActivity
而不是Activity
,然后您就可以使用
FireMissilesDialogFragment a =new FireMissilesDialogFragment();
a.show(getSupportFragmentManager1(), "missiles");