0 голосов
 
670 просмотров
28.08.2018 / 18:33  garfild63

Не выводится другой Layout при нажатии на кнопку назад

Вот код:
  1.                     ListView listView = new ListView(activity);
  2.                     listView.setAdapter(new MyAdapter());
  3.                     listView.setOnItemClickListener(new MyOnItemClickListener(Displayable.this));
  4.                     listView.setOnKeyListener(new View.OnKeyListener() {
  5.                         @Override
  6.                         public boolean onKey(View view, int i, KeyEvent keyEvent) {
  7.                             if (i == KeyEvent.KEYCODE_BACK) {
  8.                                 activity.setContentView(linearLayout);
  9.                                 return true;
  10.                             }
  11.                             return false;
  12.                         }
  13.                     });
  14.                     activity.setContentView(listView);
  15.  
  16. //Other code
  17.  
  18.     class MyOnItemClickListener implements AdapterView.OnItemClickListener {
  19.         private Displayable disp;
  20.  
  21.         public MyOnItemClickListener(Displayable disp) {
  22.             this.disp = disp;
  23.         }
  24.  
  25.         @Override
  26.         public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
  27.             if (cl != null) {
  28.                 cl.commandAction(commandsWithoutRight.get(i), disp);
  29.             }
  30.             activity.setContentView(linearLayout);
  31.         }
  32.     }
  33.  
  34.     class MyAdapter extends BaseAdapter {
  35.         @Override
  36.         public int getCount() {
  37.             return commandsWithoutRight.size();
  38.         }
  39.  
  40.         @Override
  41.         public Object getItem(int i) {
  42.             return commandsWithoutRight.get(i);
  43.         }
  44.  
  45.         @Override
  46.         public long getItemId(int i) {
  47.             return i;
  48.         }
  49.  
  50.         @Override
  51.         public View getView(int i, View view, ViewGroup viewGroup) {
  52.             LinearLayout ll = new LinearLayout(activity);
  53.             ll.setOrientation(LinearLayout.HORIZONTAL);
  54.             /* This code is useful for MIDP-3.0
  55.             ImageView imageView = new ImageView(this);
  56.             imageView.setImageDrawable(commandsWithoutRight.get(i).getImage().drawable);
  57.             ll.addView(imageView); **/
  58.             TextView textView = new TextView(activity);
  59.             textView.setTextAppearance(activity, android.R.style.TextAppearance_Large);
  60.             textView.setText(commandsWithoutRight.get(i).getLabel());
  61.             ll.addView(textView);
  62.             return ll;
  63.         }
  64.     }

Почему при выборе пункта в listView linearLayout нормально устанавливается в activity, а при нажатии на кнопку назад linearLayout не устанавливается и вообще не реагирует на нажатие кнопки?

В MainActivity метод onBackPressed я переписал:
  1. @Override
  2. public void onBackPressed() {
  3.       //super.onBackPressed();
  4. }
Изм. garfild63 от 28.08.2018 / 18:34
28.08.2018 / 19:11  garfild63
Кстати, MainActivity - наследник AppCompatActivity
Ответы
 
1 голос
 
# 28.08.2018 / 19:53  garfild63
поставь listView.requestFocus(); перед listView.setOnKeyListener(...
28.08.2018 / 19:54  garfild63
Спасибо большое =)
30.08.2018 / 16:18  garfild63
Нет, просто когда я ответ нахожу быстрее, чем мне помогут, я в таких случаях отвечаю сам себе. Хоть это и выглядит глупо, зато если какой-нибудь другой человек столкнётся с моей проблемой, он уже будет знать, как её решить. =)
Всего: 1

Реклама

Мы в соцсетях

tw tg yt gt