如何从菜单切换到新的活动?

3

我有一个菜单,希望当用户点击菜单项时能够打开一个新的活动:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
        case R.id.add_symbol:
           System.out.println("ADD SYMBOL CLICKED!");
           Intent myIntent = new Intent(this.getContext(), AddStocksActivity.class);
           startActivityForResult(myIntent, 0);
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

我不确定如何正确创建我的Intent。
编译器错误:
The method getContext() is undefined for the type Main

你的代码会发生什么?通常情况下,你可以使用“this”作为你的上下文。 - Cheryl Simon
方法getContext()对于类型Main未定义。 - Sheehan Alam
你没有使用Eclipse吗?在Eclipse编辑器中,你应该会在那一行收到一个错误。 - Falmarri
5个回答

6

由于 Main 扩展了 Activity(它又扩展了 Context),因此您可以这样做:

Intent myIntent = new Intent(this, AddStocksActivity.class)

2
哦,是的,如果你必须在匿名内部类中这样做,你可以按照我的答案来做。或者你可以使用MyActivity.this来实现。 - Falmarri

2

this is what I do

public boolean onCreateOptionsMenu(Menu menu){
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);

    MenuItem item1 = menu.findItem(R.id.menu_item_a);
    Intent intent1 = new Intent(this, A.class);
    item1.setIntent(intent1);

    MenuItem item2 = menu.findItem(R.id.menu_item_b);
    Intent intent2 = new Intent(this, B.class);
    item2.setIntent(intent2);

希望能对您有所帮助。


你可以使用 YourClassName.this 而不是仅仅使用 this。 - achie

0
在你的活动类中做以下操作:
Context mContext;

在你的onCreate()方法中执行
mContext = this

然后在您的选项中,执行以下操作

Intent myIntent = new Intent(this.getContext(), AddStocksActivity.class);

0
 Intent myIntent = new Intent(getApplicationContext(), AddStocksActivity.class);

或者

Intent myIntent = new Intent(this, AddStocksActivity.class)

0

this.getContext()更改为this.getApplicationContext()

您正在尝试调用不存在的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接