2012-07-12 131 views
19

我想创建一个按钮,可以让用户直接回到没有android name =“com.example.example”的主要活动。
它有android.intent.etc ...
我怎样才能引用我的按钮回到这个活动?返回MainActivity的按钮

+0

感谢编辑,(有英语不好) – Moussa 2012-07-12 21:26:10

+0

什么是你正在试图启动活动的全名? – confucius 2012-07-12 21:28:25

+0

主要活动,她是<应用 机器人:图标= “@绘制/ ic_launcher” 机器人:标签= “@串/ APP_NAME”> <活动 机器人:标签= “@串/ APP_NAME” 机器人:名称=“。Main”> Moussa 2012-07-12 21:29:32

回答

40

比方说您的主要活动被称为Main.java。

btnBack.setOnClickListener(new OnClickListener(){ 

    private void onClick(){ 
    Intent intent = new Intent(currentActivity.this, Main.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
    } 
}); 
+0

这会将一个新的Home活动实例添加到堆栈中,而不是将用户带回到Home活动。 – 2012-07-12 21:48:53

+0

您正在将新的实例添加到堆栈中! – 2012-07-12 21:54:44

+1

我添加了标志,因此它不会将新实例添加到堆栈。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2012-07-13 17:13:59

0

无论你在哪里调用startActivity()方法都需要按钮中的onClick方法。而已。

+0

???即时通讯一小菜抱歉 – Moussa 2012-07-12 21:32:40

3
Intent intent = new Intent(this, Main.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 
+0

错误新Intent(this,Main.class); – Moussa 2012-07-12 21:33:03

+0

什么是错误 – confucius 2012-07-12 21:34:19

+0

这是我的设置:公共无效的onClick(视图v){ \t //上点击执行操作 \t \t意向意图=新意图(这一点,Main.class); \t intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK \t | Intent.FLAG_ACTIVITY_CLEAR_TOP); \t startActivity(intent); \t \t这是错误:构造函数Intent(new View.OnClickListener(){},类

)未定义。 – Moussa 2012-07-12 21:41:03

14

使用startActivity(intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));

+0

+1:这是正确的答案。添加像NEW_TASK这样的标志只会为用户创建意想不到的行为,并且只需启动新的活动就会向堆栈添加第二个(新)实例。 – Devunwired 2012-07-12 21:34:22

+0

不工作,你可以更详细吗? – Moussa 2012-07-12 21:44:46

+1

@Moussa Intent a = new Intent(this,Home.class); a.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(a); – 2012-07-12 21:50:43

9

有时候,你可以叫activity.finish()结束当前活动,因此主要(第一次创建)活动将弹出。

如果这不是你的情况下,这样做:

Intent intent = new Intent(getApplicationContext(), Main.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)    
startActivity(intent); 
0
public void onBackPressed(){ 
    finish(); 
} 
+2

这并不意味着它会进入主体,这意味着它只会回到栈上的前一个活动。这是错的 – 2017-06-06 19:03:03

+0

这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [发表评论](/ review/low-quality-posts/16343576) – Zoe 2017-06-07 11:28:13

+0

@LunarWatcher我很尊敬地不同意 - 这是一个_attempt_回答...一个尝试可能是错误的,并且发生在非常特殊的情况下 - 但是解决方案不好,不足以删除。 – 2017-06-07 14:53:01