【问题标题】:Activitiy's layout opens more than one?Activity的布局打开不止一个?
【发布时间】:2013-05-14 14:55:26
【问题描述】:

我有三个活动与三个布局相关联。当我每次在收集背景之前调用一项活动时。例如。然后我在mainactivity上,当我在B上时我调用B然后再次调用main,之后我调用B,如果我点击屏幕B,它会出现B>main>B>main或类似的东西B>A>主>A>主>B>主...

private Intent intent_Main;
.
.
.
intent_Main = new Intent(this, MainActivity.class);
startActivity(intent_Main);

这是我调用活动的代码,像 B (this, B.class) 这样......

我希望当我点击与 main 不同时,它只是转为 main,当 main 显示它退出时 - 不显示以前的活动屏幕 -...

编辑: 如何关闭主要活动的所有屏幕(退出)以及如何仅返回其他人的主要活动?

[如果我转到 B.class 及其屏幕,然后转到主活动(带有按钮等),然后再次 B,然后我单击返回,我返回主活动,然后再次按下返回第一个 B,然后单击返回返回第一次打开 mainactivity 后关闭]

【问题讨论】:

  • 你的问题不清楚。

标签: android class android-layout android-intent android-activity


【解决方案1】:

每次您在 Activity B 中时,不要启动 new Intent 去您的 Activty Main,只需致电 finish()

【讨论】:

    【解决方案2】:

    使用

    main.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    

    或在清单中使用

    android:launchmode="singleTop"
    

    【讨论】:

    • 我想它可以工作。 singleTop 意味着每次当我返回 mainactivity 或者我转到 B 然后 A 并在显示 A 时单击返回它只变成 B 然后关闭或 A 到 main?
    【解决方案3】:

    你应该打电话:

    finish();
    

    如果您不希望用户在使用startActivity() 开始新活动后返回活动。

    以下代码启动一个新的activity,然后调用finish()退出当前的activity:

              Context ctx = getApplicationContext();
              Intent intent = new Intent( ctx, MainActivity.class );
    
              // Start our real activity
              startActivity( intent  );
    
              // Finish this activity so user doesn't return via back button
              finish();
    

    【讨论】:

    • 我不使用我不知道的上下文。我刚刚看到this 的意图。有什么区别,哪个更好?
    • 这是一个很好的问题,但遗憾的是在任何地方都没有绝对肯定的答案。 ThisAndroid Developer 的博客讨论了区别并给出了一些指导,但没有给出绝对的答案,只是说“避免与上下文相关的内存泄漏”“尝试使用上下文应用程序而不是上下文活动”。仅供参考,this 是活动级上下文,getApplicationContext() 返回应用级上下文。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    相关资源
    最近更新 更多