我按照Reto Meier的“专业Android 4应用程序开发”的骨架和我的教授的一些幻灯片编写了这段代码,但我无法理解为什么新的活动(PreferencesActivity,完全编码)没有启动而且没有提高任何类型的错误:当我在我创建的标准安卓菜单中按“首选项”时,在VM中它不会做任何事情。 我在app的清单中正确添加了新活动(只是名称,标签,主题和屏幕方向)。
这是代码
public class MainActivity extends Activity implements OnClickListener, OnValueChangeListener {
static final private int MENU_PREFERENCES = Menu.FIRST+1;
...
@Override
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
menu.add(0, MENU_PREFERENCES, Menu.NONE, "Preferences");
return true;
}
public boolean onOptionsitemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch(item.getItemId()) {
case (MENU_PREFERENCES): {
Intent i = new Intent(this, PreferencesActivity.class);
startActivity(i);
return true;
}
}
return false;
}
...
}
我得到的唯一奇怪的是Logcat中的这个警告
06-20 14:50:49.760: W InputManagerService(699): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@41219950
答案 0 :(得分:1)
您可以同时使用它们
Intent i = new Intent(getApplicationContext(), PreferencesActivity.class);
Intent i = new Intent(MainActivity.this, PreferencesActivity.class);
但是使用第一个更好,因为在第二个内存泄漏问题可能会出现,并且只是在清单文件中添加此行。
<activity android:name=".PreferencesActivity" />
答案 1 :(得分:0)
您可以使用this
代替使用getApplicationContext()
,而是获取当前流程的应用程序对象的上下文。
试试这个......
Intent i = new Intent(getApplicationContext(), PreferencesActivity.class);
startActivity(i);
这可能会帮助你..
答案 2 :(得分:0)
您的密码:
Intent i = new Intent(this, PreferencesActivity.class);
startActivity(i);
return true;
而不是this
,您需要传递MainActivity.this
Intent i = new Intent(MainActivity.this, PreferencesActivity.class);
startActivity(i);
return true;
问题是正确的上下文没有传递所以它没有启动Activity。
答案 3 :(得分:0)
您需要传递MainActivity
Intent i = new Intent(MainActivity.this, PreferencesActivity.class);
startActivity(i);
return true;
最好使用菜单
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Log.d(TAG, "onOptionsItemSelected()");
switch (item.getItemId()) {
case android.R.id.yourId:
finish();
return true;
case R.id.Yourid:
return true;
default:
return super.onOptionsItemSelected(item);
答案 4 :(得分:0)
您也可以写
startActivity(new Intent(getApplicationContext(),NextActivity.class));
在NextActivity.class中输入您的活动名称