我有一个广播接收器,它使用以下代码启动活动a
Intent appIntent = new Intent(context, A.class);
appIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_FROM_BACKGROUND);
context.startActivity(appIntent);
A活动启动正常,然后我按下一个按钮,使用此代码启动另一个活动B
TaskStackBuilder tsb = TaskStackBuilder.create(this);
tsb.addParentStack(this);
Intent intent=new Intent(this, B.class);
tsb.addNextIntent(intent);
tsb.startActivities();
活动B开始很好,但我按下后退按钮还是向上按钮活动A没有显示
这是清单字段中两个活动的定义
<activity android:name=".A" android:launchMode="singleTop"
android:label="@string/app_name" >
</activity>
<activity android:name=".B"
android:label="@string/app_name" android:parentActivityName="myPackage.A">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="myPackage.A" />
</activity>
在活动B中,我有以下代码
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.simplelistlayout);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public void onBackPressed() {
moveTaskToBack(true);
B.this.finish();
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
// Respond to the action bar's Up/Home button
case android.R.id.home:
Intent upIntent = NavUtils.getParentActivityIntent(this);
if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
TaskStackBuilder.create(this)
.addNextIntentWithParentStack(upIntent)
.startActivities();
} else {
NavUtils.navigateUpTo(this, upIntent);
}
return true;
}
return super.onOptionsItemSelected(item);
};
我试图调试,我认为问题是当我从广播接收器调用活动A时,FLAG_ACTIVITY_NEW_TASK导致意图同时具有动作(android.intent.action.主)和类别(android.intent.category.发射器),活动A不是我的发射器活动,所以当活动B收到后退动作或按下向上按钮时,我看到活动A的意图是正确的,但是有了启动器活动的动作和类别,我如何解决这个问题?
我在广播接收器中将呼叫改为活动A
Intent appIntent=new Intent(context, A.class);
appIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(appIntent);
和对活动B的呼叫
Intent intent=new Intent(this, B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
现在它正在工作
如果在B
中按BACK键,它将执行以下代码:
@Override
public void onBackPressed() {
moveTaskToBack(true);
B.this.finish();
}
这会将任务移到后台,这就是为什么您不会看到活动A。您为什么要这样做?
我正在使用android 2.1,希望在Mapsavity上添加一个后退按钮。我在这一页上尝试了什么[在操作栏上显示后退按钮,但应用程序崩溃。我已经按照另一个论坛的建议将extends FragmentActivity替换为AppCompatActivity,但应用程序仍然崩溃。我知道这与操作栏有关,因为如果我删除它,应用程序就会工作。操作栏似乎为空。我被卡住了,已经启动了应用程序数次。下面是错误
我有一个活动,当我的应用程序首次启动时开始(只有一次)。该活动允许用户选择主题。然后当他们按下完成键时,我完成了这项活动。这会将用户引导到主活动。但是当用户按下返回按钮时,它会返回到第一次启动的活动(我使用完成()关闭的活动)。但我想要的是,应用程序应该关闭时,用户按下返回按钮从主活动(总是)。我在两个类中都重写了onBackPress。 这两个类中的onBackPressed方法如下所示: 主活
我有一个玩家活动和浮动玩家(服务),点击后退按钮后,玩家活动关闭,浮动玩家开始行动,当我点击浮动玩家时,我想回到玩家活动,但没有再次运行创建方法。 我在StackOver Flow中读到了很多解决方案,特别是使用FLAG\u ACTIVITY\u CLEAR\u TOP和FLAG\u ACTIVITY\u SINGLE\u TOP标志,或者将android:launchMode=“singleTa
当使用Intent启动一个新活动时,活动顶部的栏是否会自动提供后退按钮?我假设它是这样工作的,但没有看到它。如果它没有自动出现,需要什么来使它出现?
我目前正在处理一个Android项目,当用户在使用对话框主题的活动上按后退按钮时,我遇到了问题。 基本上,我有一个活动,让我们称之为我的活动,第二个活动使用@android: style/Theme.Holo.Dialog称为MyDialog。 当MyDialog活动显示在屏幕上时,活动对话框在对话中按预期启动,但当用户按下返回按钮时,对话框活动按预期关闭,但启动活动即MyActive似乎结束了,
我正在使用Actionbar和它的“up”按钮从一个细节活动返回到主活动,这很好。类似地,用户可以按系统“后退”按钮返回到主活动。 在我的主要活动中,在中,从internet下载数据,以便在应用程序启动时显示。我注意到,当我使用Actionbar“up”按钮从细节转到主要活动时,运行,重新下载数据。但是当我使用系统“后退”按钮时,没有运行,因此立即显示主活动视图。 我在详细信息活动中用于实现“向上