2011-10-20 8 views
0

私はメインビューとサブビューのセットを持つアプリケーションをXMLとして定義しています。戻るボタンを使用してメインビューに戻ります

@Override 

public boolean onKeyDown(int keyCode, KeyEvent event){ 
    if (keyCode == KeyEvent.KEYCODE_BACK){ 
     setContentView(R.layout.main); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

しかし:

holaPlayerBtn.setOnClickListener(new OnClickListener(){ 
@Override 

public void onClick(View view) 
{ 
    setContentView(R.layout.primerareceta); 
    }; 

は私がしようとしているメインビューに戻る:私は私は別のビューに切り替えると

@Override 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

: 私は、メインビューをロードこれを行うと、メインビューが再描画されますが、それに含まれるボタンはもう機能していません。

これはなぜ発生しているのですか? 前回と同じようにすべてのボタンが機能しているメインビューに戻るにはどうすればよいですか?あなたの助けのための

おかげ ペドロ

答えて

1

は、そのようなレイアウトを切り替えないでください。別のアクティビティを使用することをお勧めします。ViewSwitcherを使用することもできます。

+0

、あなたはその後、別の活動を使用し、クール – user1006082

+0

うまく働きました。 –

1

setContentViewを呼び出すと、画面上の内容が置き換えられます。これにより、以前に行ったすべてのリスナーとビューが効果的に削除されます。これを行うには、onCreateの中で呼び出すことができる関数の中の元の初期化コードと、戻るボタンが押されたときにすることができます。

これは、標準のアプリケーションフローのようなサウンドを求めているときには、多くの作業のようです。 startActivityを使用してアクティビティ間で変更する必要があるビューを変更するのではなく、主なアクティビティを作成する方が簡単です。これはまた、あなたがそれを処理するコードを書かなくても、あなたが望む振る舞いをバックボタンで与えることになります。

+0

startActivtyは正常に機能しました。 – user1006082

1

setContentViewを複数回呼び出すことは許可されていないと思います。そしてどちらにしても間違いないはずです。 startActivityを使用し

ViewSwitcher javadoc

first example

second example

+0

私はstartActivity – user1006082

+0

を使用しました。これは良いオプションです。それはあなたがそれが自動的にしたいように思われる方法をバックボタン機能になります – FoamyGuy