-2

Android アプリケーションの 1 つで静的スタックを使用する必要があります。これが私がそれをどのように使用したかです:

定数ファイル:

public static Stack<String> st = new Stack<String>();

アクティビティ ファイルでは、onBackPressed メソッド内で次のロジックが使用されます。

if (!Constants.st.isEmpty()) {
    Log.i("CHECK", "Stack is not empty.");
    Log.v("CHECK", "PEEK: " + Constants.st.peek()); 
    Constants.st.pop();
    if(Constants.st.isEmpty()){
        Log.i("CHECK", "Stack is empty.");
    }else{
        Log.v("CHECK", "PEEK after POP: " + Constants.st.peek());
    }
}else{
    Log.i("CHECK", "Stack is empty.");
}

一度戻るボタンを押すと(つまり、 pop() 関数が機能します)、2回目は( pop() 関数 )機能しません。上記のロジックのログは次のとおりです。

: Stack is not empty.
: PEEK: UI_FirstActivity
: Stack is empty.
: Stack is not empty.
: PEEK: UI_SecondActivity
: PEEK after POP: UI_FirstActivity
: Stack is not empty.
: PEEK: UI_FirstActivity
: PEEK after POP: UI_FirstActivity

PS: もう 1 つのことは、これらすべての UI.. 関数に、同じアクティビティに表示される動的に作成されたさまざまなフォームが含まれている場合です。ここで、任意のメソッド/フォームを入力/表示すると、その名前、つまり UI.. がスタックにプッシュされます。

PPS: 私は反対票を投じても構いませんが、簡単な説明は非常に役に立ちます。

PPPS: EJBは私が想定していることを想定しているようです :-)。正確に何が起こっているのかをもう一度説明しようとします。私には活動がありますここでは、さまざまな形式を一度に 1 つずつ表示することを選択しています。各メソッド UI_First... は 1 つのフォームを表します。UI_Second などのビューが含まれていないため、フォームの 1 つが表示されないことがあります。したがって、UI_First の後、UI_Third フォームが表示されます。ユーザーが戻るボタンを押すと、理想的な状況は、プログラムが UI_Second.. をスキップし (ビューが含まれていないため)、UI_First を開くことです... この機能を実装するために、フォームが表示されるたびに、つまり UI_First のときにスタックを使用しました。 ... メソッドが呼び出され、その名前がスタックにプッシュされます。戻るボタンを押すとポップされます。わかりにくかったら申し訳ありません。

PPPPS: 10 分前に問題が発生しました。それはまさにpratikが答えで言っていることだったので、私は彼の答えを受け入れるつもりです.

4

2 に答える 2

0

私はそれがうまく機能していると思います。これが私が理解したことです、あなたが持っている最初のバックプレスの間に、

[UI_FirstActivity] alone and it pops making the stack empty.

しかし、二度目には、

[UI_SecondActivity,UI_FirstActivity] so it pops UI_SecondActivity alone you have 1 item in stack still.

私があなたの質問を誤解した場合は、私を修正してください。

于 2013-09-18T05:34:14.390 に答える