Я совершенно новый для Android, поэтому у меня есть очень простой вопрос.Различные виджеты (виды) для разных ориентаций экрана?
В принципе, у меня есть два макета экрана, один для портрета, а другой для пейзажной ориентации. Я использую папки res/layout и res/layout-land. Обе ориентации рисуются отлично, но у меня разные виджеты (кнопки) для каждой ориентации, btnPortrait и btnLandscape.
Проблема возникает, когда я пытаюсь вызвать onSetClickListener(). Поскольку, когда устройство ориентировано в портрете, фреймворк не может найти btnLandscape и наоборот, я обрабатываю изменения ориентации вручную, используя onConfigurationChange(). Кажется, он тоже не работает.
Мой код:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnPortrait = (Button) findViewById(R.id.portraitButton);
tvPortrait = (TextView) findViewById(R.id.portraitText);
btnLandscape = (Button) findViewById(R.id.landscapeButton);
tvLandscape = (TextView) findViewById(R.id.landscapeText);
}
И onConfigurationChange():
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
btnPortrait.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "Portrait",Toast.LENGTH_SHORT).show();
}
});
}
else {
btnLandscape.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "Landscape", Toast.LENGTH_SHORT).show();
}
});
}
}
Ни одна из работ тостов. Кто-нибудь знает, что может случиться?
Заранее спасибо.
Почему у вас есть разные кнопки для каждого? Просто дайте им тот же идентификатор, и активность будет выглядеть соответственно –
Они не нацелены на ту же функцию, другими словами, это две совершенно разные кнопки. Я упростил код с Toast, чтобы не входить в бизнес-модель, которая не связана с моим вопросом. – AirieFenix