从操作栏项调用对话框功能会导致Android应用程序崩溃

时间:2015-07-02 01:00:00

标签: android android-alertdialog

我有一个我想点击的操作栏项目:

android:onClick="showDialog"

所以我可以调用我的show dialog函数,当我从activity_main.xml上的一个按钮调用但不能从我的menu_main.xml调用它时。当我在menu_main.xml中输入此代码时,我收到了这个小的信息警告, - 方法" showDialog"在" MainActivity"签名不正确。

一旦应用程序打开,它会立即崩溃并发生致命异常:

dialog.com.dialogtry1 E / AndroidRuntime:FATAL EXCEPTION:main     android.view.InflateException:无法在类dialog.com.dialogtry1.MainActivity中解析菜单项onClick handler showDialog

这是我在MainActivity中的showDialog代码:

    public void showDialog(View v){
        FragmentManager Fmanager = getFragmentManager();
        Dialog myDialog = new Dialog();
        myDialog.show(Fmanager, "MyDialog");
}

这是我的Dialog类:

    public class Dialog extends DialogFragment{
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.dialogfragment, null);
    }
}

这是我的dialogfragment.xml:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Create new list."
    android:id="@+id/headerID"
    android:textSize="20sp"
    android:padding="5dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"/>
<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="List name here."
    android:layout_below="@+id/headerID"
    android:id="@+id/editTextID"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Yes"
    android:layout_below="@+id/editTextID"
    android:id="@+id/yesID"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="No"
    android:id="@+id/noID"
    android:layout_below="@+id/editTextID"
    android:layout_toRightOf="@+id/yesID"/>

2 个答案:

答案 0 :(得分:0)

而不是使用

android:onClick="showDialog"

按照onOptionsItemSelected的说明尝试使用hereonOptionsItemSelected是处理菜单项中点击事件的正确方法。

答案 1 :(得分:0)

我发现了这个问题..当我从我的showDialog函数中删除(View v)作为争论时,我能够使用OnOptionsItemSelected而没有&#34;方法无法解析&#34;错误。你发布的链接肯定会对我的未来有所帮助,这就是很多好东西。谢谢!