[英]Android Studio, Passing 1 ArrayList between 2 Activites
[英]How do Activites follow eachother on Android studio?
因此,我也嘗試學習一些Android Dev,並將數據保存到sql,並嘗試在注冊時保存數據,但是當數據成功時,它將加載其他活動,而不是main活動,這是我的代碼。 我希望我的方法onSignupSuccess
打開MainActivity.class我沒有收到任何錯誤,而是打開了
DisplayLogoActivity"
表現
<activity android:name=".activities.DisplayLogoActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activities.MainActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activities.LoginActiviy"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.Dark" />
<activity
android:name=".activities.SignupActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.Dark" />
我的onSignupSuccess方法
public void onSignupSuccess(int userId) {
signUpBT.setEnabled(true);
Session session = new Session(getBaseContext());
session.setuserId(userId);
setResult(RESULT_OK, null);
finish();
}
我的主要活動
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Session session = new Session(getBaseContext());
if (session.getuserId() == 0) {
startActivity(new Intent(this, LoginActivity.class));
}
我的會議
public class Session {
private SharedPreferences prefs;
public Session(Context cntx) {
prefs = PreferenceManager.getDefaultSharedPreferences(cntx);
}
public void setuserId(int userId) {
prefs.edit().putInt("userId", userId).commit();
}
public int getuserId() {
return prefs.getInt("userId", 0);
}
public void logout() {
prefs.edit().remove("userId").commit();
}
}
您正在DisplayLogoActivity上啟動LoginActivity,當您完成LoginActivity時,Android將彈出“活動堆棧”,因此,將顯示的活動為DisplayLogoActivity。
為了解決這個問題,您可以使用startActivityForResult啟動LoginActivity等待結果,並且在收到結果后(如果可以)啟動MainActivity,或者如果用戶未登錄則執行任何操作。
另一種方法是在DisplayLogoActivity而不是Login上啟動MainActivity。 並使用此代碼,檢查在創建MainActivity時是否已登錄用戶,以啟動(或不啟動)LoginActivity。
要了解完整情況,
如果您有活動A(DisplayLogoActivity),B(LoginActivity),C(MainActivity)
而且,如果您在B活動上調用finish()方法,則該活動將從歷史記錄堆棧中消失,並且在調用finish()的活動之前打開的最后一個活動將被打開。
所以就你而言
您有三種方法可以解決此問題(兩種方法來自@Massita),另一種方法是從A啟動B活動時也調用finish()方法,如下所示:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.