私はAndroidが初めてで、実装中に問題が発生しました。 ユーザーが既にログインしている場合にMainActivity.javaアクティビティに移動しようとしています。ユーザーがログインしていない場合、LoginActivity.javaに移動します。onCreate()内でインテントインテントを開始するときに無限ループを取得する
これは、私の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);
}
}
私はアプリを実行すると機能しますが、アクティビティは無限ループに陥り、ループの原因はわかりません。
アップデート1:デバッガ PS:画像内SponsorDetails.javaが問題のMainActivity.javaです。
アップデート2:私は
Intent intent = new Intent(MainActivity.this, MainActivity.class);
startActivity(intent);
を削除しかし、まだ、私はonResponseで無限ループ()メソッドを取得していますコメントで示唆したようにMainActivity の意図を削除します。はい、コードを削除した後、私はエミュレータからアプリケーションをアンインストールし、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 =新しいインテント(MainActivity.this、MainActivity.class)' - なぜあなたは既にもう一度アクティビティを開始したいのですか? –
なぜ: 'Intent intent = new Intent(MainActivity.this、MainActivity.class);' –