Кнопка onClick не обнаружена с ListView и ListActivity - PullRequest
0 голосов
/ 26 мая 2011

У меня есть следующий макет:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent">
 <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <Button android:text="Height" 
        android:layout_height="wrap_content" 
        android:id="@+id/buttonHeight" 
        android:layout_width="wrap_content"
        android:layout_weight="15"
        android:onClick="OnClickHeight">
    </Button>
    <Button 
        android:text="Width" 
        android:layout_height="wrap_content" 
        android:id="@+id/buttonWidth" 
        android:layout_width="wrap_content"
        android:layout_toRightOf="@id/buttonHeight"
        android:layout_weight="1"
        android:onClick="onClickWidth">
   </Button>
 </LinearLayout>
 <ListView android:id="@android:id/list"
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent"
 android:dividerHeight="1px"
 android:drawSelectorOnTop="false"/>
 </RelativeLayout>

Затем у меня есть класс, расширяющий ListActivity, в котором у меня есть методы onClickWidth и onClickHeight, например:

 public void onClickWidth(View v) 
 {
   // does stuff
 }

Однако эти события onClick не обрабатываются. Если я изменю класс для расширения Activity вместо ListActivity, а также удалю ListView из моего макета, , а затем , это будет обнаружено!

Я попытался установить android: clickable = "true", поиграл с атрибутом android: focusable и многими другими вещами, но я просто не могу заставить это работать. Как я могу решить это, или это просто не разрешено?

Ответы [ 5 ]

0 голосов
/ 09 апреля 2013

установить атрибут android: downndantFocusability родительского макета, который содержит ListView, в значение blocksDescendants , например:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" 
android:descendantFocusability="blocksDescendants"> ...</LinearLayout>
0 голосов
/ 13 сентября 2011
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_land);

            Button btn = (Button) findViewbyid(R.id.buttonWidth);

            btn.setOnClickListener(this);
}
public void onClickWidth(View v) 
{
      if(v == btn){
            //your code...
      }
}
0 голосов
/ 26 мая 2011

Поместите OnClicklistener в сам адаптер.

0 голосов
/ 26 мая 2011

Вместо того чтобы использовать материал onClick в макете, вы пробовали что-то вроде этого:

Button buttonWidth = (Button)findViewById(R.id.buttonWidth);
buttonWidth.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        //do stuff
    }
});

Затем сделайте то же самое для buttonHeight.

0 голосов
/ 26 мая 2011

Можете ли вы сказать нам, что вы пытаетесь сделать? А зачем вам ListActivity?

Извините за редактирование: P

Вы можете посмотреть здесь: Как обрабатывать щелчок ListView в Android

...