我有一个我一直在开发的小应用程序。我想在运行 4.2.1 的 Galaxy Nexus 上运行全新安装。我卸载了该应用程序,然后尝试通过 Eclipse 重新安装它。它安装得很好,logcat、控制台等没有错误……但是当你点击运行应用程序时,它只是在打开时关闭。我在两部不同的手机上试过这个,同样的事情。
在 Galaxy Nexus 上,如果我在卸载之前恢复我的 ROM,我可以从 eclipse 中运行它。只有在卸载并重新安装后,我才能强制关闭。它安装在 ROM 备份上。
有任何想法吗?!我怎样才能知道这里发生了什么?
编辑:::
活动只在清单中声明一次......
尝试更改版本号...没有效果
在 MainActivity 中添加了一些 Log.e():
protected void onCreate(Bundle savedInstanceState) {
Log.e(TAG,"STARTING APP");
super.onCreate(savedInstanceState);
// show no back arrow
Log.e(TAG,"AFTER ONCREATE");
setContentView(R.layout.activity_firstload);
Log.e(TAG,"AFTER SETCONTENTVIEW");
getPrefs();
Log.e(TAG,"GET PREFS");
finish();
Log.e(TAG,"AFTER FINISH");
}
LogCat 中显示的唯一标签是“AFTER FINISH”
如果我摆脱完成,MainActivity 保持打开状态。主要活动所做的就是检查首选项。这是我的 GetPrefs()
private void getPrefs() {
// Get the xml/preferences.xml preferences
Log.e(TAG,"GET PREFS 1");
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
lp = prefs.getString("defaultreport", "");
Log.v(TAG, lp);
if (lp.equals("esac")) {
// Toast.makeText(MainActivity.this, "ESAC", Toast.LENGTH_SHORT)
// .show();
Intent i = new Intent(MainActivity.this, ESACActivity.class);
startActivity(i);
} else if (lp.equals("sac")) {
// Toast.makeText(MainActivity.this, "SAC", Toast.LENGTH_SHORT)
// .show();
Intent i = new Intent(MainActivity.this, SACActivity.class);
startActivity(i);
} else if (lp.equals("msar")) {
// Toast.makeText(MainActivity.this, "MSAR", Toast.LENGTH_SHORT)
// .show();
Intent i = new Intent(MainActivity.this, MSARActivity.class);
startActivity(i);
}
}
啊>>> 可能发现了什么。首选项最初设置为 "" (null) 那么它会加载什么?!所以我需要一个屏幕来询问他们想在第一次运行时设置哪个我猜......
编辑编辑::: 需要检查首选项中的首次运行...
if (prefs.getString("defaultreport", null) == null)
{
startActivity(new Intent(this, Preferences.class));
return;
}