gpt4 book ai didi

Android:具体如何处理Back Press?

转载 作者:太空宇宙 更新时间:2023-11-03 12:00:04 27 4
gpt4 key购买 nike

让我解释更多细节。

首先;我知道如果用户按回键并返回上一个 Activity ,则上一个 Activity 会正确触发 onResume 方法。这没关系。

我的应用程序中有一个根 Activity ,它通过按钮引导 4 个不同的 Activity 。我想了解,用户在哪个 Activity 上按下了后退按钮?是否可以使用类似 Handler 或类似的东西?

其实,我已经找到了一个解决方案。我有 4 个不同的静态 bool 变量,每个变量代表一个 Activity 。让我在代码中展示:

public class MainActivity extends Activity { // This is root

static Boolean activityA;
static Boolean activityB;
static Boolean activityC;
static Boolean activityD;

public void onClick(View v) {
if(v == ActivitvyA) //of course psuedo
activityA = true
//...there are similar controls
}

protected void onResume() {
if(activitiyA) // If true, this means the user pressed back on ActivityA
}

}

你怎么看?有什么不同而有效的方法吗?

任何帮助都会很棒。

最佳答案

基本上,当用户登陆您的根 Activity 时,您想知道他来自哪个 Activity。

我认为携带此类信息的最佳方式是使用 startActivityForResult 启动您的子 Activity 。

public static final int CODE_A = 10;
public static final int CODE_B = 20;

public void goToA() {
Intent i = new Intent(this,AActivity.class);
startActivityForResult(i, CODE_A);
}

public void goToB() {
  Intent i = new Intent(this,BActivity.class);
  startActivityForResult(i, CODE_B);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode==CODE_A) {
// ...
}
else if(resultCode==CODE_B) {
// ...
}
}

另一种方法是将用户可见的最后一个 Activity 存储在某处(例如在自定义应用程序类中),并在每个 Activity 的 onPause 方法中更新它。像这样的东西:

class MyApplication extends android.app.Application {
public Class latestActivity;
}

class MyBaseActivity extends Activity {
public void onPause() {
((MyApplication)getApplication()).latestActivity = this.getClass();
super.onPause();
}
}

最后一种方法是将刚刚启动的 Activity 存储在根 Activity 中。

class MyRootActivity extends Activity {
private String latestUserAction;

public void goToA() {
latestUserAction = "goToA";
startActivity(Intent.ACTION_VIEW, .........
}

// Don't forget to check that latestUserAction gets saved and restored when your activity is paused or stopped.
}

关于Android:具体如何处理Back Press?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11669704/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com