如何处理android的活动

时间:2016-04-07 05:53:42

标签: android android-activity

我从活动A打开活动B,然后从活动B打开活动C. 现在点击活动C后面的,它应该打开活动B,如果我在活动C中按ok,它应该回到活动A.

public class ActivityA extends ActionBarActivity  
{  
    public void onCreate(Bundle savedInstanceState)
    {
    ....
    }

public void onClick(View v)
{
    Intent intent = new Intent(this, ActivityB.class);

    startActivityForResult(intent,100);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data)

{

    super.onActivityResult(requestCode, resultCode, data);


    if(resultCode != RESULT_OK)

    {

        return;

    }


    if(requestCode == 100)
    {
        String val=data.getStringExtra(“result_str”);
        ....

    }
}
}

public class ActivityB extends ActionBarActivity
{
public void onCreate(Bundle savedInstanceState)

{
    ....
}

public void onClick(View v)
{
    Intent intent = new Intent(this, ActivityC.class);

    startActivityForResult(intent,100);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data)

{

    super.onActivityResult(requestCode, resultCode, data);


    if(resultCode != RESULT_OK)

    {

        return;

    }


    if(requestCode == 100)
    {
        Intent intent = new Intent();

        intent.putExtra(“result_str”,data.getStringExtra(“result_str”));
        intent.putExtra("val",val);

        setResult(RESULT_OK, intent);

        finish();
    }
}
}

public class ActivityC extends ActionBarActivity
{
public void onCreate(Bundle savedInstanceState)

{
    ....
}

public void onClick(View v)
{
    ....
    Intent intent = new Intent();

    intent.putExtra(“result_str”,result)

    setResult(RESULT_OK, intent);

    finish();
    }
 }

在这种情况下,我可以看到两个活动消失了。我不希望看到两个活动在视觉上完成。如何实现呢?

3 个答案:

答案 0 :(得分:1)

  1. 如果按下Acitivity c中的后退按钮,只需完成活动c,即可进入活动B.
  2. 如果您按下确定按钮,将 FLAG_ACTIVITY_CLEAR_TOP 设置为意图并启动活动a并完成活动c。它完成了活动c和活动B并转到活动A.

答案 1 :(得分:0)

执行以下代码

你想从A开始B,然后在任何点击方法或事件中写下A活动中的代码。

 Intent i = new Intent(this, B.class);
 startActivity(i);
 finish();

现在你必须从B打开C活动,然后在代码上面使用val。

 Intent i = new Intent(this, C.class);
 startActivity(i);
 finish();

现在打开C活动的B活动在Back和on Ok按钮时间打开A acivity。

此处代码表示在按下确定按钮时从C打开A acivity。

     Intent i = new Intent(this, A.class);
     startActivity(i);
     finish();

以下代码写入onBack按钮从C活动按下并打开B活动。

  @Override
  public void onBackPressed() {
    super.onBackPressed();

     Intent i = new Intent(this, B.class);
     startActivity(i);
  }

答案 2 :(得分:0)

  

现在点击活动C后面,它应该打开活动B

在AndroidManifest.xml中

<activity
   android:name=".C"
   android:label="Activity C"
   android:parentActivityName=".B">

   <meta-data
    android:name="android.support.PARENT_ACTIVITY"
    android:value=".B"/>
 </activity>
  

如果我在活动C中按ok,它应该返回活动A

ok.setOnClickListener(new View.OnClickListener(){

   public void onClick(View view){
   Intent intent = new Intent(ActivityC.this,ActivityA.class);
    startActivity(intent);
   }
});