1

LoginPageから始まるアプリケーションを開発しています。ユーザーがログインすると、さまざまな部門のグリッド ビューが表示されるメイン画面に移動します。

ログインページを除くアプリケーションのすべてのページには、ホーム、ログアウトなどのさまざまなアイコンを持つフッターがあります。

モバイルの戻るボタンを使用して、条件付きで戻る機能を追加したいと考えています。いくつかの条件は次のとおりです。

1) ログイン ページ ---> メイン画面 ---> 背面のユーザーはログアウトしてログイン ページに移動する必要があります。

2) メイン画面 --> 任意の部門 ---> 任意のサブ部門 --> ユーザーが [戻る] ボタンを押すと、同じ順序で戻ります

3) ユーザーがアプリケーション内の任意の場所にいる ---> フッターからホーム ボタンを押した場合 ---> メイン画面に移動 --> 前のページに戻る機能がない、条件 1 に従う必要があります。

4) ユーザーがログインページにいる場合、ユーザーは戻るボタンを押すとアプリケーションを終了します

5) ユーザーがメイン画面にいる場合、ユーザーはログアウトし、[戻る] ボタンを表示してログイン ページに移動する必要があります。

マニフェストで「noHistory = true」を使用し、アクティビティファイルでインテントフラグを使用してみました。

それを解決するための最良の方法を私に提案してくれる人はいますか?

4

7 に答える 7

1

スタックをグローバルに使用して、画面の順序を保存します。スタックは、アプリケーション レベルで使用できる必要があります。また、戻るボタンをクリックしたときの画面順序を取得します。画面順序の切り替えケースを記述し、そのアクティビティを開始します。それでおしまい。

例えば。

crate a class class MyStack{
//here declare a static stack 
//create setter,getter method for assinging values to stack
}

メイン画面の割り当て 1 からスタックにアクティビティを開始する場合、setter メソッドを使用してスタックで画面の値を割り当てる新しいアクティビティを開始すると、サブ画面の割り当て 2 がスタックに開始されます。

戻るをクリックすると、その値が取得されます

switch(value){
case 1: //start mainscreen break;
case 2: //start sub screen break;
}
于 2012-05-22T06:23:55.873 に答える
1
  1. 問題になることはありませんonBack。関数をオーバーライドして、ログアウト プロセスを追加するだけです。

  2. 問題ありません。戻るボタンの通常の動作はまさにそれです。

  3. こんなことしないで!!!悪い行動

  4. 戻るボタンの通常の動作。

  5. それがステップ1でした。

于 2012-05-22T05:58:14.530 に答える
1

これは、バック プレスでアプリケーションを終了するために使用されます。

@Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                finish();
                System.exit(0);
            }
            return super.onKeyDown(keyCode, event);
        }

元に戻したい場合は、上記のコードから System.exit(0) を削除してください。これを使用することで、あなたが望むすべての状態を管理することができます。

于 2012-05-22T06:02:49.970 に答える
0

最も簡単なアプローチは、「メイン画面」アクティビティの戻るボタンをオーバーライドして、戻るボタンが押されたときに次のことができるようにすることだと思います。1。ログアウトロジックを実行する:2。ログインページを明示的に呼び出す

これはあなたが探している振る舞いを与えるかもしれません。戻るボタンを上書きする方法については、次のリンクを参照してください:http: //android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

お役に立てれば!

于 2012-05-22T06:13:25.987 に答える
0

私の理解では、ホームボタンの機能をオーバーライドすることはできません。デフォルトでは、onPause() を呼び出して、現在の状態でアプリを最小化します。アプリを再度開くと、 onResume() が呼び出され、一時停止した場所からアプリが開始されます。戻るボタンの機能に関する限り、上記の回答のほとんどは問題ありません。

試す、

@Override
public void onBackPressed()
{
finish();   //finishes the current activity and doesnt save in stock
Intent i = new Intent(CurrentActivity.this, Login.class);
i.addflags(Intent.flag_activity_no_history);
startActivity(i);
}
于 2012-05-22T06:33:14.060 に答える
0

戻るボタンでイベントをトラップするには、これを試してください

public boolean onKeyDown(int keyCode, KeyEvent event){
    if(keyCode == KeyEvent.KEYCODE_BACK) {
            Intent Act2Intent = new Intent(thisActivity, Activity2.class);              
            startActivity(Act2Intent);          
            finish();
            return true;
    }
    return false;
}
于 2012-05-22T05:57:29.633 に答える
0

各アクティビティで OnBackPress() を実装します。それをオーバーライドして、ログアウト、履歴スタックのクリア、新しい (前の) アクティビティの開始など、必要な機能を追加します。

于 2012-05-22T06:00:56.557 に答える