首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示DialogFragment

显示DialogFragment
EN

Stack Overflow用户
提问于 2012-06-10 23:02:06
回答 1查看 4.7K关注 0票数 0

我有一个扩展android.support.v4.app.DialogFragment的类ActivityExitDialogFragment。在ActivityExitDialogFragment中,只有两个方法可以获取ActivityExitDialogFragment的新实例: onCreateDialog和newInstance。下面是它们:

代码语言:javascript
复制
public Dialog onCreateDialog(Bundle savedInstanceState) {
    String title = getArguments().getString("title");
Dialog myDialog = new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.ic_launcher)
.setTitle(title)
.setNegativeButton("No", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
        // Dismiss the dialog.
        dismiss();
    }
    })
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
        // Close the Activity.
        getActivity().finish();
    }
}).create();

return myDialog;
}

static ActivityExitDialogFragment newInstance(String message) {
ActivityExitDialogFragment dialog = new ActivityExitDialogFragment();
Bundle args = new Bundle();
args.putString("title", message);
dialog.setArguments(args);
return dialog;
}

下面是用于显示对话框的方法。它在同一个包中的不同活动中。当用户单击exit按钮时将调用该函数:

代码语言:javascript
复制
public void cancelButton(View v) {
    ActivityExitDialogFragment dialog =                        
    ActivityExitDialogFragment.newInstance(exitMessage);

    dialog.show(new FragmentActivity().getSupportFragmentManager(),               
    "Exiting");
}

每当我单击exit按钮时,我就会在dialog.show行得到一个IllegalStateException。我以前遇到过这个问题,这是因为我的项目的libs文件夹中没有android-support-v4.jar文件。我把那个jar文件放在libs文件夹中,它起作用了。我将类的名称从其他名称更改为ActivityExitDialogFragment,并让eclipse更改java文件的名称以与之匹配。从那时起,我又得到了这个例外。我不知道是不是巧合,我在更改名称后再次得到异常,或者eclipse做了其他事情,只是更改了jar文件的名称以匹配公共类的名称。我尝试更改getInstance方法的访问修饰符,删除并添加android support jar文件的新副本,将名称改回原来的名称,并在Google上花费了几个小时,但我还没有找到答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-11 00:58:14

你不应该尝试用new来直接实例化一个活动。取而代之的是直接从您拥有的活动中获取片段管理器:

代码语言:javascript
复制
dialog.show(getSupportFragmentManager(),               
"Exiting");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10969746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档