2011-01-02 6 views
0

メインクラス(Main)のビューを拡張し、画面のフォーカスをとるクラス(InputControl)を作成しました。私はcontrol()を呼び出してInputControlビューを設定するメインのxmlレイアウトのボタンを持っています。そこからユーザの入力を取得します。Android;ビューで混乱していますか?

InputControlビュークラスからxmlレイアウトに戻すにはどうすればよいですか?

public class Main extends Activity { 

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

    InputControl = new InputControl(this); 
} 

//......SNIP! 

public void control(){ 
setContentView(InputControl); 
    InputControl.requestFocus(); 
} 

} 


public class InputControl extends View implements OnTouchListener { 

public InputControl(Context context) { 
    super(context); 
    setFocusable(true); 
    setFocusableInTouchMode(true); 

    this.setOnTouchListener(this); 

} 


public boolean onTouch(View view, MotionEvent event) { 

//...I AM CAPTURING USER TOUCH EVENTS HERE 

} 


} 

答えて

3

あなたは物事をこの方法を行うための特別な理由がない限り、より良い方法は、独自のレイアウトファイルと第二活性(例えばInputControlActivity)を持っており、それにあなたのInputControlクラスを埋め込むことがあるかもしれません。

InputControlActivityが終了したら、電話のBACKボタンを押すだけでそのアクティビティが閉じられ、メインアクティビティに戻ります。

+0

こんにちは、これは主に問題を解決しました。私は実際にそれを前にこのように設定しましたが、それはうまくいかなかったのですが、なぜ動かすことができませんでしたが、私は戻って再試行するように促しました。私はそれをほとんどソートしました;) – jwbensley

+0

"setFocusableInTouchMode真); "私のInputControlクラスですべてのキーイベントをキャプチャできるように、私は画面に触れるだけでなく、ボリュームキーを使用したいと思います。ボリュームキーのようなシステムキーをキャプチャしているので、Backボタンを押すと、アクティビティを閉じずにメインラインに戻りません(私のクラスがイベントをインターセプトしているので推測できますが)ボリュームキーの押下をキャプチャすることはできません、これの周りには何か方法はありますか? – jwbensley

+0

@ javano:Backボタンをキャプチャしている場合は、いつ押されたかを確認する必要があります。理想的には、それを処理する通常のキーイベントハンドラ(super)に渡す必要があります。代わりに、finish()を呼び出すと、Backボタンと同じようにアクティビティが終了しますが、実際にはfinish()だけを使用します。 – Squonk

関連する問題