我正在尝试在操作栏上创建一个按钮,该按钮将激活同一活动中的方法。
下面是我的菜单xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".AddContactActivityOCR">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />
<item
android:id="@+id/undo"
android:orderInCategory="100"
android:title="UNDO"
app:showAsAction="always"/>
</menu>
以下是我在活动中的相关代码:
@Override
public boolean onCreateOptionsMenu (Menu menu) {
getMenuInflater().inflate(R.menu.menu_add_contact_undo, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.undo:
onRewrite();
return true;
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void onRewrite(View v){
listName.setText(recognizedText);
listOwner.setText(recognizedText);
companyName.setText(recognizedText);
companyAddress.setText(recognizedText);
companyNumber.setText(recognizedText);
mCurrentLang = mFromLang;
validator(recognizedText);
}
我正在尝试开始&#34; onRewrite()&#34;当我点击&#34; UNDO&#34;我的操作栏上的按钮。
我尝试使用&#34; android:onClick =&#34; onRewrite&#34;在普通按钮上,它可以启动此方法。为什么不开始&#34; onRewrite&#34;在这种情况下?
答案 0 :(得分:2)
为什么显示错误?
你有创建方法参数View onRewrite(View v)
,你试图在没有参数的情况下调用它,这就是为什么它会显示你的消息。
从方法中删除参数。如下所示
public void onRewrite(){ .... // your code}
我尝试使用&#34; android:onClick =&#34; onRewrite&#34;在一个普通的按钮和它 能够启动这种方法。
想要在两种情况下都使用方法。创建两个同名的方法&amp;在其中使用相同的代码。
public void onRewrite(){ .... // your code}
public void onRewrite(View v){ .... // your code}
另一个解决方案是在活动中创建按钮点击并从layout.xml中删除android:onClick="onRewrite
,从点击事件以及onRewrite()
onOptionsItemSelected
答案 1 :(得分:2)
更改您的活动代码
错误因为您在没有参数
的情况下调用on on onwrite()方法requestAlwaysAuthorization
希望这会对你有所帮助