0

我有一个我一直在开发的小应用程序。我想在运行 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;
        }
4

1 回答 1

0

如果没有偏好,您决定运行什么的字符串将设置为空。

lp = prefs.getString("defaultreport", "");

而且由于您在这种情况下没有任何选择,所以什么都不会运行,初始活动将在不启动任何其他活动的情况下关闭。

于 2013-02-15T01:32:01.410 回答