0

まず、ここや他の場所で多くのスレッドを読みましたが、ここで答えが見つからないようです。「終了」し、アプリが眉をひそめていることに気付きましたが、これが私のシナリオです。どうすればよいですか?

  • 最初の起動時に、ログイン画面が表示され、ユーザーを記憶するオプションが表示されます
  • ログイン後、メニュー アクティビティがアクティブになります
  • アプリが起動するログインアクティビティに戻るのではなく、メニューからアプリを終了するために戻るボタンが必要です。ログイン画面に戻る必要がある場合は「ログアウト」するメニューオプションがあります。それ以外の場合は、メニューアクティビティからバックプレスでアプリを終了したいだけです。

のオーバーライドでOnBackButtonPressed、アプリを終了させる方法はありますか?

4

2 に答える 2

0

私はあなたの要件をすべて読みました。それを達成するには、以下に示すようにアプリケーションのフローを操作するだけで済みます.

アプリケーションの起動中に起動されるログイン画面内で、

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login);
    UTILS.Log_e(TAG, "onCreate");




        initialize();

    //check for configuration
//here you need to check,whether user has been logged in already or not
    if(!CONSTANTS.isConfigured)
    {
//display login dialog if user has not been logged in already

        displayLoginDialog();
    }
    else
    {

//move to Home screen if user has already logged in
        i.setClass(mContext, HomeActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(i);
        finish();
    }

}

ホーム画面内で、

    @Override
public void onBackPressed() {
    exitApp();
}

private void exitApp()
{
    i.setClass(mContext, ExitActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(i);
    finish();
}


//call logout function as per your requirement

    private void logout()
{
    i.setClass(mContext, LoginActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(i);
    finish();

}

ExitActivity 内で、

   public class ExitActivity extends Activity{

    private static final String TAG = "ExitActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        moveTaskToBack(true);
        finish();
        }

}

注: 上記のコードでは、 のインスタンスである を使用i.setClass(context,destination_class_name)しました。iIntent

マニフェスト内で、

        <activity
        android:name=".ui.LoginActivity"
        android:label="@string/app_name" 
        android:windowSoftInputMode="stateHidden|adjustPan">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".ui.HomeActivity" >
    </activity>
    <activity
        android:name=".ui.ExitActivity" >
    </activity>

問題が発生した場合、または上記のコードで理解できない点がありましたら、お知らせください。

于 2013-02-01T05:17:10.397 に答える
0

インテントにフラグを付けてアクティビティ C を開始してみませんか? をオーバーライドする必要はないと思いますOnBackButtonPressed。かなり単純なソリューションには複雑すぎます。

例えば:

Intent showActivity = new Intent(Sender.this, Receiver.class);
showActivity.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(showActivity);

このようにして、ユーザーが戻るボタンを押すと、ユーザーはアプリケーションを終了し、ログイン画面には戻りません。

Back Buttonをオーバーライドする必要がある場合は、次の例を試してください。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Intent a = new Intent(this,A.class);
    a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(a);
    return true;
    }

    return super.onKeyDown(keyCode, event);
}

このコードのバイトスターへの小道具: https://stackoverflow.com/a/9398171/450534

于 2013-02-01T02:40:11.780 に答える