2

我有两个活动:A 和 B。

从 A 到 B:

创建

Context context = this;

点击

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

从 B 到 A:(如果 B 有返回 A 的按钮)

button.setOnClickListener(new View.OnClickListener(){
   public void onClick(View v){
      finish();
   }
});

但如果流程是这样的:

A呼叫B,正在观看B的用户单击主页按钮并再次从启动的活动中单击B并单击按钮调用finish(),它转到主页而不是我的第一个活动A。我该怎么做?

编辑:

流动

  1. A->B // 使用 startActivity(Intent);
  2. B->Home // 点击设备上的主页按钮
  3. Home->B // 从已启动的活动中单击我的应用程序
  4. B.finish() -> Home 而不是 A //finish 或 onBackPressed 做同样的事情
4

5 回答 5

1

你能试试这个:-

为什么您使用getApplicationContext()而不是使用thisActivity A name.

A->B

 Intent i = new Intent(yourcurrentActivity,B.class);
 startActivty(i);

乙->甲

称呼finish()

如果您使用它,请更新:- 删除它

android:noHistory="true";
于 2013-03-29T10:02:36.697 回答
0

称呼

onBackPressed();

代替

finish();
于 2013-03-29T10:03:53.830 回答
0

试试这个:

startActivity(new Intent(B.this,B.class));

并在活动 A 中完成()为

// in your activity A
Intent i = new Intent(getApplicationContext(),B.class);
startActivity(i);
finish();

public void OnBackPressed()
{
finish();
}
于 2013-03-29T10:04:06.463 回答
0

试试这个:

public void startActivityForResult (Intent intent, int requestCode)
于 2013-03-29T10:04:44.230 回答
0

检查下面的代码:我有 3 个活动:MainActivity,A_Acvitiy,B_actiivty(希望它按照您的要求工作..)

package com.example.androidtest;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void callActivity(View v) {
        if (v.getId() == R.id.button1) {
            // A
            startActivity(new Intent(MainActivity.this, A_activity.class));
        }

        if (v.getId() == R.id.button2) {
            // B
            startActivity(new Intent(MainActivity.this, B_activity.class));
            if (GeneraClass.isFormB) {
                            GeneraClass.isFormB = false;
                finish();
            }
        }
    }
}

A_活动:

package com.example.androidtest;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class A_activity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.a_layout);
    }

    public void callActivity(View v) {
        if (v.getId() == R.id.button1) {
            // B
            startActivity(new Intent(A_activity.this, B_activity.class));
                 finish();
        }

    }

}

b_活动:

package com.example.androidtest;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class B_activity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.b_layout);
    }

    public void callActivity(View v) {
        if (v.getId() == R.id.home) {
            // home
            GeneraClass.isFormB = true;
            startActivity(new Intent(B_activity.this, MainActivity.class));
            finish();
        }

    }
}

我的额外课程:

package com.example.androidtest;

public class GeneraClass {

    public static boolean isFormB = false;
}

所以,Home-->A(finish)-->B--->Home(if from b then finish)-->B-->Back--> Home --->Back--> exit App

于 2013-03-29T10:33:27.957 回答