Java 对于意图使用其他活动类的活动,不会调用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) {

我想在我的测试应用程序onOptionsItemSeleceted方法()中使用一个库活动,但我发现如果我使用intent。Android使用库活动的OnOptions ItemSelected方法()而不是我的测试活动方法()。我做了一个测试应用程序,我的主要活动如下:

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中的方法。