当前位置: 首页 > 知识库问答 >
问题:

按钮返回MainActivity并结束所有正在运行的儿童活动

景靖琪
2023-03-14
package pap.crowslanding;


public class Game extends MainActivity implements OnClickListener {
private MazeBall ball;
protected static GameView gameV;

@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tester1);
    Button settings = (Button) findViewById(R.id.settingsButton);
    Button mainMenu = (Button) findViewById(R.id.backButton);

    ball = (MazeBall) findViewById(R.id.mazeball);
    gameV = (GameView) findViewById(R.id.game_view);

    settings.setOnClickListener(this);
       mainMenu.setOnClickListener(this);

      //Unrequired code removed

    // IF USER PRESSES ON !Main Menu!
    public void onClick(View v) {
        switch (v.getId()){
        case R.id.settingsButton:

        break;
        case R.id.backButton:
            onBackPressed();
        break;
    }
    }

public void onBackPressed() {
    this.finish();//try activityname.finish instead of this
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}
}

共有1个答案

郭乐意
2023-03-14

我认为你可以把每个启动活动放在一个堆栈中,每次你回到你的主活动。

这里有一个类,我用它来管理我的一个应用程序中的所有活动,每次我输入一个活动,在它的onCreate方法中,我调用它的addActivity()方法将活动放入堆栈。每次快速执行一个活动时,在它的onDestory方法中,我都会调用Manager的finishActivity方法来完成Stack中最后一个输入活动。在您的例子中,我认为您可以创建一个方法来弹出并完成所有晚于MainActivity进入堆栈的活动,并在每次返回MainActivity时调用该方法。

公共类AppManager{

private static Stack<Activity> activityStack;
private static AppManager instance;

private AppManager(){
}

public static AppManager getInstance() {
    if(instance == null)
        instance = new AppManager();
    return instance;
}

public void addActivity(Activity ac) {
    if(activityStack == null)
        activityStack = new Stack<Activity>();
    activityStack.add(ac);
}

public Activity getCurrentActivity(){
    if(activityStack == null)
        return null;
    return activityStack.lastElement();
}

public void finishActivity(Activity ac) {
    if(activityStack != null && ac != null){
        activityStack.remove(ac);
        ac.finish();
        ac = null;
    }
}

public void finishActivity() {
    if(activityStack != null) {
        Activity ac = activityStack.lastElement();
        finishActivity(ac);
    }
}

public void finishActivity(Class<?> cls) {
    if(activityStack == null)
        return;
    for(Activity ac: activityStack){
        if(ac.getClass().equals(cls)){
            finishActivity(ac);
        }
    }
}

public void finishAllActivity(){
    if(activityStack == null)
        return;
    Activity ac;
    for(int i = 0, size = activityStack.size(); i < size; i ++) {
        ac = activityStack.get(i);
        if(ac != null) {
            ac.finish();
        }
    }
    activityStack.clear();
}

public void appExit(Context context) {
    try {
        finishAllActivity();
        System.exit(0);
    } catch (Exception e) {
        Log.e("AppManager", "exit error:" + e.getMessage());
    }
}
 类似资料:
  • 首先,我已经看到了所有其他关于类似的问题和答案,但我需要的是一点不同。 我需要能够在后台关闭所有正在运行的活动(它们正在运行一个线程,当我返回MainActivity时,它们仍然在运行)

  • 我对promise不熟悉。我查找了按顺序执行promise的示例,但没有找到与我的应用程序类似的示例。 我的问题是,我想按照一定的顺序解决promise,但也要捕获promise解决时的所有结果。通过查找例子。我已经创建了这个问题的简化版本。 我能够创建一个函数doWork(),但问题是它所做的只是按顺序解决promise,而没有捕获结果。 理想情况下,我想要一个返回promise的函数,该函数将

  • 我正在制作一个应用程序,其中有一个“MainActivity.class”,它有一个按钮“Edit profile”,可以引导另一个活动,称为“Editprofile.class”。它(MainActivity)还有一个文本视图,显示一个字符串(名称)。 Editprofile.class接受来自用户的字符串,按下添加按钮后,新的字符串会更新到数据库中,替换以前的字符串。现在,当更新后,用户通过后

  • 在主管内部- 以下是我主管课程的一部分: 以下是导致子参与者停止的条件: 在akka工具包中,我可以使用哪个API打印我的Supervisor类中所有子角色的状态?

  • 所以我有一个用例,我有四个任务a,B,C,D,我想并行运行。这些任务的响应类型是布尔型的。 在并行运行它们之后,我想在以下任一条件下停止执行 从任一任务接收第一个false时返回。 4个任务全部完成,没有一个返回false。 我的项目使用的是Java,springboot 所以我试图使用可完成的未来来实现这一点。我可以在第一步成功,就像下面的代码一样。但不是第二步。有什么帮助吗?

  • 问题内容: 在我的应用程序中,我有两个活动。首先是启动屏幕,它仅显示应用程序名称和其他一些信息。单击初始屏幕活动后,我正在加载主要活动。我的应用程序运行正常,但遇到一个小问题。如果我从主要活动中按返回按钮,则控件将启动初始屏幕活动。但我不想再次显示启动画面活动,我想避免在按“后退”按钮时启动画面。 可能吗?如果可以,怎么办? 问题答案: 在文件中,在初始屏幕中添加属性。