Android:如何清除先前堆栈中除第一个活动之外的所有活动

时间:2015-11-18 22:03:23

标签: android android-intent activity-stack

我将活动列表作为表单但是一旦表单完成,我想清除除第一个活动之外的所有堆栈但显示一个新活动,因此当点击新活动时将返回到第一个活动。 / p>

E.g。 A - > B - > C - > D然后变成A - > E因此,在D ..上提交表格后,用户可以看到E

我是否以这种方式推出?

Intent message = new Intent();
message.setFlag(ACTIVITY_FLAG_CLEAR_TOP)
message.addClass(getContext(), E.class)
startActivity(E.class);

2 个答案:

答案 0 :(得分:0)

我认为正确的是FLAG_ACTIVITY_CLEAR_TOP

Intent intent = new Intent(getApplicationContext(), Home.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

答案 1 :(得分:0)

当我想从应用程序注销时,我会告诉你我这样做的方式。

这可以帮助您完成活动B - > C - > D并开始活动A

首先,我在具有会话详细信息的类中创建一个注销方法

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction("com.test.your.packgage.ACTION_LOGOUT");
    registerReceiver(new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("onReceive","Logout in progress");

            finish();
        }
    }, intentFilter);
}

然后,在每项活动中你都必须这样做:

public class MainActivity extends AppCompatActivity{


private EditText editText;
private ListView listView;


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

    counter = 0;
    Firebase.setAndroidContext(this);
    final Firebase firebase = new Firebase("https://samp-is.firebaseio.com/");


    editText = (EditText) findViewById(R.id.editText);
    listView = (ListView) findViewById(R.id.listView);

    listView.setAdapter(new MessageAdapter(this, Message.class, R.layout.fragment_message, firebase.child("chat")));

    Button button = (Button) findViewById(R.id.button);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            counter++;

            Message message = new Message();

            message.setMessage(editText.getText().toString());
            editText.setText("");
            message.setAuthor("Name");
            message.setCounter(counter);
            firebase.child("chat").push().setValue(message);


        }
        });
    }
}