2011-01-02 3 views
0

Я создал класс (InputControl), который расширяет представление моего основного класса (Main) и фокусируется на экране. У меня есть кнопка на основном макете xml, который вызывает control() и настраивает мое представление InputControl, откуда я беру пользовательский ввод.Android; Смущенный мнениями?

Как я могу вернуться к макету xml из класса представления InputControl?

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 в это.

Затем вы должны запустить экземпляр второго действия (с помощью функции startActivity()), как только вы закончите в InputControlActivity, просто нажатие кнопки BACK телефона закроет эту активность и вернется к основному.

+0

Привет, это как в основном решена проблема. Я действительно сделал это раньше, но это не сработало, и я не мог понять, почему, но вы побудили меня вернуться и попробовать еще раз, и я его отсортировал почти;) – jwbensley

+0

У меня есть «setFocusableInTouchMode (правда);" на моем классе InputControl, чтобы я мог записывать все ключевые события, я захватываю касание экрана, но также хочу использовать клавиши регулировки громкости. Поскольку я захватываю системные ключи, такие как клавиши громкости, когда я нажимаю кнопку «Назад», я не закрываю действие и не возвращаюсь к основному, если не принимать эту строку (предположительно, потому что мой класс перехватывает событие), но затем я не может захватить нажатие клавиш громкости, есть ли способ обойти это? – jwbensley

+0

@javano: Если вы снимаете кнопку «Назад», вам нужно будет проверить, когда она нажата. В идеале вы должны передать его нормальному обработчику событий (супер), который будет обрабатывать его. В противном случае вызов finish() будет прекращать действие таким же образом, как обычно, кнопка «Назад», но только использовать финиш(), если вам действительно нужно. – Squonk

Смежные вопросы