-1

我有一个具有三种布局的应用程序。

根据 android 文档,如果您FLAG_ACTIVITY_CLEAR_TOP在意图中使用标志返回顶部活动,并且活动的启动模式设置为“标准”,您应该获得活动的新实例。这将加载在首选项中设置的不同布局。

我在运行 4.2.2 的 android 模拟器中得到了这种行为,而没有使用除FLAG_ACTIVITY_CLEAR_TOP. 在我也运行 4.2.2 的 Nexus 7 中,除非我退出并重新启动应用程序,否则我永远不会获得新实例并获得旧布局。

我尝试将 'android:launchMode="standard"' 添加到清单中,并将FLAG_ACTIVITY_NEW_TASK标志添加到意图中而没有任何变化。

这是清单的摘录和应该重新启动它的代码片段。

<activity
android:name="org.billthefarmer.accordion.MainActivity"
android:label="@string/app_name"
android:launchMode="standard"
android:screenOrientation="portrait" >
  <intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>

类的代码:

case android.R.id.home:
    // app icon in action bar clicked; go home
    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    return true;

有没有更好的方法来实现这一点,或者我错过了什么?

4

1 回答 1

0

尝试将此方法添加到您的活动代码中:

public void reload() {

    Intent intent = getIntent();
    overridePendingTransition(0, 0);
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    finish();

    overridePendingTransition(0, 0);
    startActivity(intent);
}

取自这里

于 2013-05-23T12:45:49.613 回答