Java 对于意图使用其他活动类的活动,不会调用OnOptions ItemSelected
我想在我的测试应用程序onOptionsItemSeleceted方法()中使用一个库活动,但我发现如果我使用intent。Android使用库活动的OnOptions ItemSelected方法()而不是我的测试活动方法()。我做了一个测试应用程序,我的主要活动如下:Java 对于意图使用其他活动类的活动,不会调用OnOptions ItemSelected,java,android,android-intent,view,android-activity,Java,Android,Android Intent,View,Android Activity,我想在我的测试应用程序onOptionsItemSeleceted方法()中使用一个库活动,但我发现如果我使用intent。Android使用库活动的OnOptions ItemSelected方法()而不是我的测试活动方法()。我做了一个测试应用程序,我的主要活动如下: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) {
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent (this, Test_1.class);
startActivity(intent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_setting:
Toast.makeText(getApplicationContext(),
"Button is clicked", Toast.LENGTH_LONG).show();
return true;
case R.id.action_setting1:
Toast.makeText(getApplicationContext(),
"Button is clicked", Toast.LENGTH_LONG).show();
return true;
case R.id.action_settings:
Toast.makeText(getApplicationContext(),
"Button is clicked", Toast.LENGTH_LONG).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
我的测试活动课是这样的:
public class Test_1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_1);
TextView txt = (TextView)findViewById(R.id.textView);
txt.setText("This is new page");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.test_1, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return false;
}
return super.onOptionsItemSelected(item);
}
我想在主活动类中使用OnOptions ItemSelected()方法,但在屏幕上看不到我的Toast消息。
如果你能帮助我,我真的很感激。谢谢:)嗯,也许可以通过
default:
return super.onOptionsItemSelected(item);
我不知道R.menu.main里有什么
但请确保有R.id.action\u设置、R.id.action\u设置1、R.id.action\u设置。SUPER:
它在子类方法定义中用于调用在超类中定义的方法。
在您的情况下,Activity
是Test\u 1的一个超类
on将调用Activity的选项ItemSelected。。不是所选的main活动
只需添加此项即可查看您的祝酒词。类内测试\u 1选择选项项:
switch (item.getItemId()) {
case R.id.action_setting:
Toast.makeText(getApplicationContext(),
"Button is clicked", Toast.LENGTH_LONG).show();
return true;
case R.id.action_setting1:
Toast.makeText(getApplicationContext(),
"Button is clicked", Toast.LENGTH_LONG).show();
return true;
case R.id.action_settings:
Toast.makeText(getApplicationContext(),
"Button is clicked", Toast.LENGTH_LONG).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
尝试在测试中扩展MainActivity_1@A.S.我已经试过了。在这种情况下,意图不起作用。我假设main中的菜单是test_1中菜单的子集,在这种情况下,您可以将其作为test_1的子类。我猜您可以在test_1中扩展MainActivity,并在switch case中有一个默认值,该值调用super.onoptionItemSelected。您是否在清单中注册了test_1?@user2309862 Yes,我在舱单上登记了测试1。当我扩展MainActivity时,意图不起作用。super.onOptionsItemSelected无法返回菜单的MainActivity。我检查了很多次,每次声明都正常。问题是在意图之后,我无法使用选项ItemSelected方法上的MainActivity。好的,我得到了,因为您转到了另一个意图。Main->test1将不会触发MainActivity中的方法。