繁体   English   中英

如何在活动之间切换

[英]How to switch between activities

在我的应用程序中,我有三个活动

  1. 活动1

  2. 活动2

  3. 活动3

如何在活动之间进行切换。

那怎么办呢?

 public boolean onOptionsItemSelected(MenuItem item)
{   

    switch (item.getItemId()) 
    {
        case R.id.settingOpt:                           
            Intent intent = new Intent(this, SettingsForm.class);
            this.startActivity(intent); 
            this.finish();
        break;         

        case R.id.reminderOpt:                          
            Intent intentR = new Intent(this, ReminderForm.class);
            this.startActivity(intentR);   
        break;

        case R.id.helpOpt:                          
            Intent intentH = new Intent(this, HelpForm.class);
            this.startActivity(intentH);  
            this.finish();
        break;

        case R.id.shareOpt:                             
            Intent share = new Intent(android.content.Intent.ACTION_SEND);
            share.setType("text/plain");
            share.putExtra(Intent.EXTRA_SUBJECT, "Name of the thing to share");
            share.putExtra(Intent.EXTRA_TEXT, "www.gmail.com");
            startActivity(Intent.createChooser(share, "Share LoveCycle's website link with your friends"));
        break;

        default:

        return super.onOptionsItemSelected(item);       
    }

    return true;
}

对于第一个问题

  1. 调用活动3后,在活动2中使用finish()。

  2. 当您按下主页按钮时,您可能应该关闭该应用程序。 因为您的应用程序将保留其状态直到关闭。

当我从Activity3单击“后退”按钮时,我应该始终转到Activity1,而不是Activity2:

在Activity3中对后退按钮按下事件使用以下方法:

setResult(R.id.common_backToActivity1);

然后在Activity2中捕获该setResult,如下所示,并关闭此Activity:

protected void onActivityResult(int requestCode, int resultCode,Intent data) {
        switch(resultCode){
        case R.id.common_backToActivity1:
            closeActivity();  //Finish Activity2 in this method
            break;  
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

然后,您将直接进入Activity1。

尝试这样的事情:

Home Key

您无法控制Home键的行为。 当按下Home键时,您的应用程序将发送到后台,而当您再次启动应用程序时,它将进入您离开的状态。 但是,此行为并不一致,因为它取决于设备。 如果设备需要内存或应用程序正在使用的任何资源,则它可以finish()应用程序。

for your activity:

使用startActivityForResult()启动活动3,然后在活动3上按finish() ,当您在活动2 finish()中的onActivityResult()中收到调用时,它将在那里回到活动1。

对于第一个问题。 您可以覆盖后退按钮,并检查当前正在进行的活动并根据该活动处理去向。

第二个问题。

在清单文件的启动活动中放入android:clearTaskOnLaunch="true" 这将使您的应用程序始终在重新启动时重新开始。

您应该实施Intent调用以遵循此要求。 而不是从Activity 2转到Activity 3,您应该完成Activity 2并返回一些值,该值提示Activity 1然后调用Activity3。至于当您按下主屏幕时,请将相同的代码添加到OnResume()OnCreate()区域中这样它就知道总是要加载哪个意图/活动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM