0

スプラッシュ画面から開始して、他のアクティビティに移動するアプリがあります。特定のアクティビティでホームボタンを押すと、アプリが最小化されます。もう一度、アプリアイコンをクリックすると、アプリはスプラッシュ画面から起動します。ホームボタンが押されたアクティビティからアプリを再開したい。これを達成する方法は?

   package com.xyz.user.login;

  import android.app.Activity;
  import android.app.AlertDialog;
  import android.content.DialogInterface;
  import android.content.Intent;
  import android.os.Bundle;
  import android.view.Menu;
  import android.view.MenuInflater;
  import android.view.MenuItem;
  import android.view.View;
  import android.widget.ImageButton;

  public class ResetPasswordActivity extends Activity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.layout.menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.logout:
        // Single menu item is selected do something
        // Ex: launching new activity/screen or show alert message
        PopIt("Are you sure you want to exit?");
        return true;

    default:
        return super.onOptionsItemSelected(item);
    }
}

private void PopIt(String string) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(string)
            .setCancelable(false)
            .setPositiveButton("Yes",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            Intent intent = new Intent(
                                    getApplicationContext(),
                                    SignInActivity.class);
                            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            intent.putExtra("EXIT", true);
                            startActivity(intent);
                        }
                    })
            .setNegativeButton("No", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }
            });
    AlertDialog alert = builder.create();
    alert.show();

}

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.reset_password);
     ImageButton imgRPass=(ImageButton)findViewById(R.id.imgChangePass);
     imgRPass.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
        Intent intent=new Intent(ResetPasswordActivity.this,ResetPasswordMessageActivity.class);
        startActivity(intent);
        }
    });
     ImageButton imgBack=(ImageButton)findViewById(R.id.imgbtnBackFromResetPass);
     imgBack.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
            finish();
            }
        });
}

}

4

4 に答える 4

1

たぶん、あなたのアクティビティのコードにはfinish()onStop()またはへの呼び出しがありますonPause()。最小化するとアクティビティが破棄され、アプリが再起動します。状態を確実に復元するために実行する他の手順がありますが、それは探し始めるのに良い場所です。

このコードをそこに入れて、何が起こっているのかを追跡してみてください。

private static final String TAG = "ResetPasswordActivity";
@Override public void onStart() {
    Log.d(TAG, "onStart:");
    super.onStart();
}  
@Override public void onResume() {
    Log.d(TAG, "onResume:");
    super.onResume();
}
@Override public void onPause() {
    Log.d(TAG, "onPause:");
    super.onPause();
}
@Override public void onStop() {
    Log.d(TAG, "onStop:");
    super.onStop();
}
@Override public void onDestroy() {
    Log.d(TAG, "onDestroy:");
    super.onDestroy();
}

なぜ実行されるべきなのかはわかりませんが、そこには呼びかけがありますfinish。それぞれに声明を出しますstartActivityLog次に、もう一度試して、アプリを最小化して再起動したときにLogcatの出力が何を示すかを確認してください。

于 2012-12-03T12:27:41.290 に答える
0

AndroidManifest.xmlをすべてのアクティビティオプションに書き込みますandroid:launchMode="singleTop"

于 2012-12-03T12:38:12.687 に答える
0

あなたはアンドロイドのデフォルトの振る舞いについて話している。ホームボタンを押すとアプリが最小化され、アプリアイコンをクリックすると、デフォルトではアプリは一時停止モードでバックグラウンドで実行されているため、同じ画面から起動します。ただし、次回の起動時にスプラッシュスクリーンが表示されます。これは、Android(メモリの制約のため)またはクラッシュによってアクティビティが強制終了されていることを意味します。詳細については、logcatを参照してください。

于 2012-12-03T12:34:46.713 に答える
0

android:noHistory="true"マニフェストファイルのアクティビティタグに含まれていないことを確認してください。これを使用すると、アプリを最小化するときにAndroidがアクティビティ状態を維持しません

于 2021-11-16T09:44:35.413 に答える