2010-08-27 63 views
1

我有一个菜单,并想开一个新的活动,当用户点击菜单项:如何从菜单切换到新的活动?

@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); 
     } 
    } 

我不知道如何创建我的意图正确

编译器错误:

The method getContext() is undefined for the type Main 
+0

与你的代码,会发生什么?通常你可以使用“this”作为你的itnent的上下文。 – 2010-08-27 20:08:47

+0

未定义类型为Main的方法getContext() – 2010-08-27 20:11:26

+0

您是不是使用eclipse?你应该在日食编辑器 – Falmarri 2010-08-27 20:31:32

回答

4

由于Main扩展Activity(延伸你可以这样做:

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

中得到这个行的错误哦,是的,如果你必须在一个匿名的内部类中做到这一点,你可以按照我的答案。或者你可以做'MyActivity.this' – Falmarri 2010-08-27 20:29:18

+0

这是个好地方! – Jorgesys 2010-08-27 20:38:57

0

变化this.getContext()this.getApplicationContext()

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

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) 
2

这是我做的

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); 

}

希望它有助于

+0

你可以使用YourClassName.this而不是这个 – achie 2010-08-27 20:36:30