【问题标题】:Reloading activities in android在android中重新加载活动
【发布时间】:2012-06-13 19:37:12
【问题描述】:

我正在制作一个 android 应用程序,我希望该活动在另一个活动上按下后退按钮后自行重新加载。我有一套活动。所以我得到了主要的,还有很多其他的。假设主要的是activity-1,其他的是activity-2,3,4,5,6,7。一旦用户按下一个将他带到活动 2、3 或 4 的按钮,他将再次看到一些按钮,其中一个按钮会将他带到活动 3、4 或 5。所以当用户在从主活动启动的一个活动中,并按下后退按钮,应该重新加载主活动,这怎么可能?请提前提供帮助并非常感谢!

【问题讨论】:

  • 在调用startActivity(...) 之后立即让所有Activities 除了Activity-1 调用finish()
  • 这听起来是个坏主意……为什么需要实现这种行为?在我看来,这违反了 android 惯例,并且有点破坏了用户体验......
  • 我必须重新加载主要活动才能从 SharedPreferences 重新加载数据,因为它们在其他活动中发生了更改

标签: android android-activity reload back


【解决方案1】:

重写 Activity(activity-2、3、4 ...)的 onBackPressed() 方法并编写代码以在其中调用 Main Activity。

例如:

@Override
public void onBackPressed() {

    Intent mainIntent = new Intent(context, YourMainActivity.class);
    context.startActivity(mainIntent);

    return;
}   

当您从任何活动中按下返回按钮时,这将重新加载您的主要活动。

【讨论】:

    【解决方案2】:
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(null);
    }
    

    也许你应该在主要活动中试试这个

    【讨论】:

    • 启动应用时出现异常,logcat说不能暂停活动。
    【解决方案3】:

    试试:

    @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                    Intent intent = new Intent(this,name of the class where you want to go to);
    
                    startActivity(intent);
    
                    return true;
            }
            return super.onKeyDown(keyCode, event);
        }
    

    此代码捕获后退按钮单击时的事件并将您带到所需的活动。

    【讨论】:

    • 我知道,onKeyDown 之前我用过很多次,我很熟悉。但是,如果我有意图地使用该代码,我只会一遍又一遍地启动该活动,不是吗???
    • 一个activity就是这样重新加载的,你也可以start an activity from its last state
    • @user1446632 您需要重新加载主要活动,那么上述方法有什么问题?
    • 当我这样做时,该应用程序感觉有点奇怪,并且没有正常的动画,而且当我在主屏幕上并且按下返回按钮退出应用程序时,我必须按很多次,因为相同的活动正在相互叠加
    【解决方案4】:

    使用finish(); 这将返回到您的案例activity-1 中的上一个活动,而无需重新加载。

    【讨论】:

    • 这就是重点,我想重新加载主要活动
    • 那么它非常简单覆盖后退按钮并使用“意图”,就像您从一个活动移动到另一个活动一样。
    【解决方案5】:

    例如,在启动 Activity 时调用完成当前 Activity。

        Intent intent = new Intent(getActivity(), AudioRecordingActivity.class);
        startActivity(intent);
        getActivity().finish();
    

    然后onbackPressed调用新的Activity For eg:.

    @Override
    public void onBackPressed() {
        Intent intent = new Intent(getApplicationContext(), IndexPageActivity.class);
        startActivity(intent);
        super.onBackPressed();
    }
    

    【讨论】:

      猜你喜欢
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多