2016-09-19 22 views
0

前のレイアウト/アクションに戻るためにBACKボタンを使用するコードは何ですか?どこに置くべきですか?私は、私のアプリで作成した私の "戻る"ボタンが行うのと同じ機能を、後ろのボタンにしたいと思います。ここで "戻る"ボタンを使用して前のレイアウトに戻る

は例です:へのコードでしょうか。この例では

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Return" 
    android:id="@+id/voltar" 
    android:layout_gravity="bottom" 
    android:onClick="callCho"/> 

、「戻る」ボタンは、前のレイアウトに戻すある「callCho」metodを、実行

EDIT: ここで同じことを行う方法を、私は戻って、以前のレイアウトに得るために、私の作成した「戻る」ボタンを使用していると私は、「戻る」という携帯電話が欲しいのボタンです:

//XML File 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Return" 
    android:id="@+id/voltar" 
    android:layout_gravity="bottom" 
    android:onClick="callCho"/> 

//main activity 
public void callCho(View v) { 
    setContentView(R.layout.choice); 
} 
+0

戻るボタンは、コードなしで前の画面のユーザーツールを自動的に返します。あなたは代わりに "アップ"ボタンを意味しますか? –

+0

フラグメントを使用すると、バックスタックにも正しく追加されると仮定しています。 –

+0

AndroidスタジオIDEで「戻る」を押すと、アプリケーションが終了/非表示になります – Mekillerow

答えて

0

だから、あなたがしていますReturnボタンを実装していて、「戻る」ボタンがまったく同じように動作するようにしたいとお考えですか?

もしそうなら、 はちょうどあなたがあなたの活動にonBackPressed()方法を書き換えて確認して、そこにすべての処理を行うと、あなたはボタン、単に呼び出すことを押したときにonBackPressed()

UPDATE:

があなたのActivityでこれを行います。その後

@Override 
public void onBackPressed() { 
    // do your back button logic here 
    // you can have conditions or whatever you want to do. 
    // change to different fragment, go to different activity, etc. 
} 

、あなたのActivityでこのメソッドを持っている:

public void callCho() { 
    onBackPressed(); 
} 

これは、ボタンを押すたびに、ユーザーが電話機のRETURN(BACK)ボタンを押したように動作することを意味します。

// UPDATE ======== >>>以下のコメントに基づいて:

getFragmentManager().popBackStackImmediate();は、限り、あなたは新しいフラグメントを起動したときのように戻って、前のフラグメントにあなたを行くために働くだろう、適切にそれをバックスタックに追加します。ここでは例です:

はあなたがフラグメントX上にあり、あなたはフラグメントYに行きたいと言ってみましょう:

getSupportFragmentManager().beginTransaction().add(fragmentY, "fragmentY").addToBackStack().commit(); 

あなたは、フラグメントY上にあり、あなたがgetFragmentManager().popBackStackImmediate();を呼び出すときに今、それはフラグメントXに移動します

これは十分明確です。

あなたはここでそれについての詳細を読むことができます:

https://developer.android.com/training/implementing-navigation/temporal.html#back-fragments

+0

サンプルコードでそのことを教えてください。 – Mekillerow

+0

私の更新された回答を参照してください –

+0

@Mekillerowは正しいです。 'onBackPressed()'で行う必要があるのは、現在のビューを移動したいビューに変更することだけです。以前のアクティビティ、スタックからのフラグメント、ダイアログが表示されます。あなたが望む何でも –

0

問題は、あなたが画面を変更するためにsetContentView()を使用していることです。正しい方法は、各画面に対して個別のアクティビティーまたはフラグメントを作成することです。別のアクティビティを使用すると、ボタン機能を無料で利用できます。フラグメントを使用すると、フラグメントをロードするときに少量の余分な作業を行う必要がありますが、戻るボタンに直接応答するコードを書く必要はありません。

関連する問題