Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓:杀死一个活动_Android_Android Activity_Back Button - Fatal编程技术网

Android 安卓:杀死一个活动

Android 安卓:杀死一个活动,android,android-activity,back-button,Android,Android Activity,Back Button,我有一个活动,用户把他的昵称。我不想在这之后再回去。我什么都试过了,但运气不好。迄今为止: 清单 <activity android:name=".NewUserActivity" android:noHistory="true" /> <activity android:name=".PvP.PVPWinningActivity" /> 或者再次在活动中: btnEnterDungeons.setOnClickListener(new View

我有一个活动,用户把他的昵称。我不想在这之后再回去。我什么都试过了,但运气不好。迄今为止:

清单

 <activity
     android:name=".NewUserActivity"
     android:noHistory="true" />
 <activity android:name=".PvP.PVPWinningActivity" />
或者再次在活动中:

btnEnterDungeons.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
         if(!TextUtils.isEmpty(editUsername.getText().toString().trim())) {
             uploadUserData();
             Intent intent = new Intent();
             intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
             intent.setClass(NewUserActivity.this, GameChooseActivity.class);                    
             startActivity(intent);
             finish();
 }
这些都不管用。实际上,我想完全终止活动,不使用后退按钮或任何方式再次访问。

您可以使用以下代码:

Intent intent=new Intent(NewUserActivity.this, GameChooseActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(intent);
    NewUserActivity.this.finish();
一次性安装? 据我所知,您需要一次性安装活动。您的代码很好。我看到的唯一问题是,当您再次打开应用程序时,它会从头开始。这是因为代码中没有逻辑来检查您是否已经完成了一次性设置。为此,您可以使用
SharedReference

您可以创建启动活动,并根据布尔标志检查一次性设置是否完成

因此,我的建议是用户第一次打开应用程序
SplashActivity-->新用户活动-->游戏选择活动
否则
SplashActivity-->游戏选择活动

如何进行一次性设置? 一次性设置完成后,将
hasDoneSetUp
设置为true,并将此值保存在
SharedReference
中,以便再次打开应用程序时,它将检查一次性设置是否完成

将其他数据保存在SharedReference或SQLiteDatabase中,并在GameChooseActivity中检索这些数据。

public void startOneTimeSetUp(){

    if(!TextUtils.isEmpty(editUsername.getText().toString().trim())) {
                uploadUserData();
                Intent intent = new Intent(SplashActivity.this, GameChooseActivity.class);

                SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
                Editor editor = pref.edit();
                editor.putBoolean("hasDoneSetup", true);           
                editor.commit(); 

                finish();
            }
}


public boolean checkForSetUp(){

     return pref.getBoolean("hasDoneSetup", true);
}

public void startGameChooseActivity(){
     Intent intent = new Intent(SplashActivity.this, GameChooseActivity.class);
     startActivity(intent);
}
相关链接 如果您不知道

如果您不知道如何将SharedReference与Android的较新版本>=API 16一起使用,请使用finishAffinity()

有限性();成功了


正如我所读到的,建议使用just finish();对于较新的API(我使用>=17),必须使用finishAfinity()

在NewUserActivity中,重写OnBackPressed()方法 然后调用finish;杀死当前的活动; 请参见下面的示例实现:

@凌驾 public void onBackPressed(){


那么是说,当你从GameChoose活动中按后退按钮时,它会返回到NewUserActivity?或者你想在再次打开应用程序时从GameChoose活动开始?请澄清,即使是从GameChoose活动或其他活动中,按后退,返回到新用户,
SplashActivity extends AppcompatActivity{

   boolean hasDoneSetUp = false;
   private SharedPreferences pref;
   private Editor editor;

   protected void onCreate(Bundle sis)
   {
      super.onCreate(sis);
      setContentView(R.layout.splash);

      pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
      editor = pref.edit();

      hasDoneSetUp = checkForSetUp();

      if(!hasDoneSetUp)
         startOneTimeSetUp();
      else
         startGameChooseActivity();

    }
}
public void startOneTimeSetUp(){

    if(!TextUtils.isEmpty(editUsername.getText().toString().trim())) {
                uploadUserData();
                Intent intent = new Intent(SplashActivity.this, GameChooseActivity.class);

                SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
                Editor editor = pref.edit();
                editor.putBoolean("hasDoneSetup", true);           
                editor.commit(); 

                finish();
            }
}


public boolean checkForSetUp(){

     return pref.getBoolean("hasDoneSetup", true);
}

public void startGameChooseActivity(){
     Intent intent = new Intent(SplashActivity.this, GameChooseActivity.class);
     startActivity(intent);
}
                    killActivity();

            })
            .setNegativeButton("No", null)
            .show();
}

private void killActivity() {
    finish();
}