从操作栏项调用对话框功能会导致应用程序崩溃 Android
Calling a dialog function from an action bar item crashes Android app
我有一个我想点击的操作栏项目,我设置了:
android:onClick="showDialog"
所以我可以调用我的显示对话框函数,当从我的 activity_main.xml 上的按钮调用时它工作正常,但不是从我的 menu_main.xml 上调用。当我在 menu_main.xml 中输入此代码时,我收到了这个小信息警告,-- "MainActivity" 中的方法 "showDialog" 的签名不正确。
应用程序一打开,它立即崩溃并出现致命异常:
dialog.com.dialogtry1 E/AndroidRuntime:致命异常:main
android.view.InflateException:无法解析 class dialog.com 中的菜单项 onClick 处理程序 showDialog。dialogtry1.MainActivity
这是我在 MainActivity 中的 showDialog 代码:
public void showDialog(View v){
FragmentManager Fmanager = getFragmentManager();
Dialog myDialog = new Dialog();
myDialog.show(Fmanager, "MyDialog");
}
这是我的对话框class:
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"/>
而不是使用
android:onClick="showDialog"
尝试使用 onOptionsItemSelected
as explained here。 onOptionsItemSelected
是处理菜单项中点击事件的正确方法。
我发现了问题.. 当我从我的 showDialog 函数中删除 (View v) 作为参数时,我能够使用 OnOptionsItemSelected 而没有 "method not resolvable" 错误。您发布的 link 肯定会对我的未来有所帮助,这是很多好东西。谢谢!
我有一个我想点击的操作栏项目,我设置了:
android:onClick="showDialog"
所以我可以调用我的显示对话框函数,当从我的 activity_main.xml 上的按钮调用时它工作正常,但不是从我的 menu_main.xml 上调用。当我在 menu_main.xml 中输入此代码时,我收到了这个小信息警告,-- "MainActivity" 中的方法 "showDialog" 的签名不正确。
应用程序一打开,它立即崩溃并出现致命异常:
dialog.com.dialogtry1 E/AndroidRuntime:致命异常:main android.view.InflateException:无法解析 class dialog.com 中的菜单项 onClick 处理程序 showDialog。dialogtry1.MainActivity
这是我在 MainActivity 中的 showDialog 代码:
public void showDialog(View v){
FragmentManager Fmanager = getFragmentManager();
Dialog myDialog = new Dialog();
myDialog.show(Fmanager, "MyDialog");
}
这是我的对话框class:
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"/>
而不是使用
android:onClick="showDialog"
尝试使用 onOptionsItemSelected
as explained here。 onOptionsItemSelected
是处理菜单项中点击事件的正确方法。
我发现了问题.. 当我从我的 showDialog 函数中删除 (View v) 作为参数时,我能够使用 OnOptionsItemSelected 而没有 "method not resolvable" 错误。您发布的 link 肯定会对我的未来有所帮助,这是很多好东西。谢谢!