我已经阅读了几篇关于使用它的帖子,但必须遗漏一些因为它不适合我.我的活动A在清单中有launchmode ="singleTop".它启动活动B,启动模式="singleInstance".活动B打开浏览器并接收和意图返回,这就是为什么它是singleInstance.我试图覆盖后退按钮,以便用户被发送回活动A,然后可以按Back返回活动,而不是再次返回活动B.
// activity B
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
 if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR
  && keyCode == KeyEvent.KEYCODE_BACK
  && event.getRepeatCount() == 0) onBackPressed();
 return super.onKeyDown(keyCode, event);
}
@Override
public void onBackPressed() {
 startActivity(new Intent(this, UI.class)
 .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
 return;
}
从浏览器返回后,堆栈是...... A,B,浏览器,B
我希望这段代码能够将堆栈更改为...... A ...以便再次按下后再将用户带回主屏幕.
相反,它似乎将堆栈更改为... A,B,浏览器,B,A ......好像那些标志不在那里.
我尝试在startActivity之后调用活动B中的finish(),但后面的按钮再次将我带回浏览器!
我错过了什么?谢谢!
java android android-manifest android-intent android-activity
正如标题所说,为什么intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)或intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)不会有效?
我有3个活动让我们说A,B和C.
当我尝试使用代码从C启动活动A时:
Intent i = new Intent(this, A.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
它只是启动活动A但不清除顶部.-_-
我也试过用setFlags().
我在这个问题上阅读了关于SO的不同问题,但我找不到正确的答案.> _ <
有人请帮忙!
编辑
@codeMagic请求的活动'A'中onBackPressed()的代码.
@Override
public void onBackPressed(){
    if(wvLogin.canGoBack())
        wvLogin.goBack();
    else
        super.onBackPressed();
}
我有 3 个活动 FirstActivity、SecondActivity 和 ThirdActivity。FirstActivity 导致 SecondActivity 导致 ThirdActivity。我希望能够在 FirstActivity 和 SecondActivity 、 FirstActivity 和 ThirdActivity 之间来回移动。
这是我实施的:
第一活动:
在 FirstActivity 我有一个 onClick 方法“goToSecondActivity”,它启动 SecondActivity
 public void goToSecondActivity(View view){
        Intent i = new Intent(this, SecondActivity.class);
        final EditText firstText = (EditText) findViewById(R.id.firstText);
        String userMessage = firstText.getText().toString();
        if(!"".equals(userMessage))
        i.putExtra("firstMessage",userMessage);
        startActivity(i);
    }
第二个活动:
再次在 SecondActivity 中,我有一个 onClick 方法“goToThirdActivity”,它启动 ThirdActivity
public void goToThirdActivity(View view){
        Intent i = new Intent(this , ThirdActivity.class);
        startActivity(i);
    }
第三个活动:
在 ThirdActivity 中,我在两个不同的按钮上有两个 onClick 方法“backToFirstActivity”和“backToPreviousActivity”
在 ThirdActivity 上,当我单击“返回第一个活动”按钮时,我想返回到 FirstActivity。 …
你好我想在默认情况下显示另一个启动画面,如果应用程序第一次启动(安装后如右)
所以我写了这个.但是新的Activity没有启动它停留在Splash屏幕上.有人可以说它有什么不对吗?
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.widget.TextView;
    public class splash extends Activity {
         private Thread splashTread;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.splash);
            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
            if(!prefs.getBoolean("firstTime", false)) {
                // run your one time code
                 Intent i = new Intent(splash.this, main.class);
                         startActivity(i);
                SharedPreferences.Editor editor = prefs.edit();
                editor.putBoolean("firstTime", true);
                editor.commit();
             // thread for displaying the SplashScreen
             splashTread = new Thread() {
                 @Override
                 public void run() {
                     try …我在清单中有4个活动A,B,C,D,E,每个活动都声明为android:launchMode="singleInstance",A parentActivity为B,而B为C的父活动。
现在用户像这样导航到E:A> B> C> D>E。我在E中有一个带有以下onClickListener的按钮
    Intent intent = new Intent(E.this, C.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
我需要的?(也根据文档,如果我理解正确,应该会发生这种情况)
我想要这个堆栈:C | B | 一种
发生了什么?
我得到这个堆栈:C | E | D | B | 一种
PS:我的问题与此非常相似,但是那里给出的答案不适合这个问题。我在其他地方找到的一些答案:
startactivity(intent)在设置标志后立即尝试对E进行finish()时,它只是完成E,而不完成D。