2012-02-13 6 views
0

私のアプリケーションには多くのビューがありますが、問題はあるビューから別のビューに戻る方法です。バック関数を作成して最後のcontentViewを設定する方法

私はすべてのビューのボタンを戻すことでそれを行うことができましたが、私はアンドロイドバックハードボタンを使用したいと思います。

私はこのような何かを試してみました:

public boolean onKeyDown(int keyCode, KeyEvent event) 
{  
    if(keyCode==KeyEvent.KEYCODE_BACK) 
      { 
     finish(); 
      } 
return false; 
} 

は、しかし、問題はこれが私のアプリケーションを終了するということです。 最後のビューが設定されたことを覚えておいてから、このビューまたはこのようなものに戻ってくるなど、適切な解決方法を教えてください。ここで

は、私はビューを変更していたとのコードは、(それが私のメインの活動の工法です)です:

public void CheckIfUserIsLogedIn() 
{ 
    int userPresence = localDatabase.CheckUserPresence(); 
    if (userPresence == 0) 
    { 
     setContentView(R.layout.main); 
    } 
    else 
    { 
     setContentView(R.layout.userlogedon); 
    } 
} 

ありがとうございました。

+0

戻るボタンで前のビューを表示したいですか? – Siten

+0

はい@サイテン、そうです。 –

+0

次のアクティビティに移動中に現在のアクティビティを終了していますか?新規または次のアクティビティを開始するコードを入力してください。 –

答えて

2

Look! ActivityクラスはコンテンツのみViewに持っている必要があり

あなたはこの間違った方法を行っている

.. (これは推奨される方法で、使いやすく実装が容易なためです)。

Viewに移動したい場合は別の別のActivityの下に表示してください。

完了すると、自動的に前のActivityにリダイレクトされます。

(そして、あなたは前のビュー:)暗記する必要はありません)Activityスタックを使用する方法、

See hereを。

+0

回答ありがとうございました。@Adil、ありがとうございます。理解していれば、私は持っているビューごとに別のクラスを使用する必要がありますか? –

+0

@Ana:はい。ログインビューを表示するには、 'R.layout.userlogedon'をコンテンツビューとして表示する' LoginActivity'が必要です。ハッピーコーディング!乾杯! :) –

+0

@Ana:はい。すべてのそれぞれのビューで異なるアクティビティを使用する必要があります。 –

1

Androidはすべて自動的にあなたのためにあなたの問題を正しく理解しているかどうかはわかりません。ビューは、あなたがそれが一時停止されている別のビューに切り替えたときに開いている(画面上ではなく、焦点を当てていない)、または停止すると、現在のビュー(アクティビティ)がによって起動された場合

http://developer.android.com/reference/android/app/Activity.html

(何もフォーカスを持っていません)前のビュー(アクティビティ)で、戻るボタンを押すと、現在のビューを閉じて、前のビューに自動的に戻ります。

は今二つのこと:

  1. おそらく、あなたは、単に上の表示によって、または行うための悪い方法であるとAndroidで推奨されていないコンポーネントをオフに同一の活性wihtinすべてのビューを開いています。あなたがすべきことは、1ビュー= 1アクティビティです。

  2. あなたは、「ビュー」のボタンを背面実装する必要があり、「iPhone/iPadの」のように考えています。アンドロイドではそうする必要はありません。その時点であなたのコードに "finish"コマンドを置くことはアプリケーションを終了させるように思えるので、あなたはポイント1で説明したようにプログラムしたと思います。

は、それが

はEDITホープ:

が新たな活動を開始するには、ロードしたいあなたのコードでこれを置くこの

startActivity(new Intent(this, MyOtherActivity.class)); 

のようにそれを行います新しいビュー(アクティビティ)

今すぐ

int aNumber; 
String aString; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    aNumber= getIntent().getExtras().getInt("myNumber"); 
    aString= getIntent().getExtras().getString("myString"); 
} 
+0

ありがとう@HpTeam、はい、あなたは正しいです、私はすべての私の見解のための1つの活動があります。私はこれを変更しようとします。 –

+0

私はあなたにもっと説明を与えるために私の答えを編集する – HpTerm

0

は、実はそれは理解していないイム

Intent myIntent; //intent declaration 

int aNumber = 10; // info to send to other activity 
String aString = "abcd"; // info to send to other activity 

// link Intent to the other activity 
myIntent = new Intent(view.getContext(), MyOtherActivity.class) 

//put the extra info 
myIntent.putExtra("myNumber", aNumber); 
myIntent.putExtra("myString", aString); 

//start the new view/activity 
startActivity(myIntent); 

と新しい開かれた活動に、あなたは(通常のOnCreateで)このようなに関する情報を取得する:ransferは活動の間にいくつかの情報は、あなたがこのような何かを行う必要があります正確には..

地図や共有の設定を行い、戻るボタンで地図または共有設定の最後の表示を設定します。

呼び出し時または開始時に、格納されたデータをフェッチします。

これが役に立ちます。

関連する問題