我是Android新手,在實現它時遇到了問題。 如果用戶已經登錄,並且如果用戶尚未登錄,那麼它將導航到LoginActivity.java,並試圖將用戶導航到MainActivity.java活動。在onCreate()啓動intent時出現無限循環
這是我的MainActivity.java的onCreate()方法內部的代碼。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = (TextView) findViewById(R.id.tvName);
prefs = PreferenceManager.getDefaultSharedPreferences(this);
Gson gson = new GsonBuilder().create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
sponsorApi = retrofit.create(SponsorInterface.class);
if (prefs.getBoolean(Constants.IS_LOGGED_IN, false)){
Intent intent = new Intent(MainActivity.this, MainActivity.class);
startActivity(intent);
user = prefs.getString(Constants.USER, "Username");
Call<Sponsor> sponsorRequest = sponsorApi.getSponsor(user);
sponsorRequest.enqueue(new Callback<Sponsor>() {
@Override
public void onResponse(Call<Sponsor> call, Response<Sponsor> response) {
int statusCode = response.code();
final Sponsor sponsor = response.body();
name.setText(sponsor.getName());
Log.d("SponsorDetails Activity", "onResponse: " + statusCode);
}
@Override
public void onFailure(Call<Sponsor> call, Throwable t) {
Log.d("LoginActivity", "onFailure: " + t.getLocalizedMessage());
}
});
}else {
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
Toast.makeText(getBaseContext(), "Please login to proceed", Toast.LENGTH_SHORT).show();
startActivity(intent);
}
}
當我運行的應用程序,它的工作原理,但在活動運行到無限循環,我不知道是什麼原因造成的循環。
UPDATE1:調試程序 PS:SponsorDetails.java在圖像是問題的MainActivity.java。
UPDATE2:MainActivity 正如意見提出的刪除意向我刪除
Intent intent = new Intent(MainActivity.this, MainActivity.class);
startActivity(intent);
不過還是我得到的onResponse無限循環()方法。是的,刪除代碼後,我從模擬器中卸載了應用程序,然後從IDE重新運行應用程序。
更新3:在onStart()方法
@Override
protected void onStart() {
super.onStart();
if (prefs.getBoolean(Constants.IS_LOGGED_IN, false)){
Intent intent = new Intent(MainActivity.this, MainActivity.class);
startActivity(intent);
}else{
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
Toast.makeText(getBaseContext(), "Please login to proceed", Toast.LENGTH_SHORT).show();
startActivity(intent);
}
}
您是否嘗試過使用調試器? – Jens
'Intent intent = new Intent(MainActivity.this,MainActivity.class)' - 你爲什麼要開始你已經在的'Activity'? –
爲什麼:'Intent intent = new Intent(MainActivity.this,MainActivity.class);' –