2017-01-02 2 views
0

Как и в названии, я попытался установить OnClickListener для представления, которое находится в другом файле XML. Я попробовал следующий код, хотя я не получил никакого исключения, он не работает.Как установить OnClickListener для представления, которого нет в main_activity.xml?

LayoutInflater layoutInflater = getLayoutInflater(); 
    View view = layoutInflater.inflate(R.layout.single_row,null,false); 
    mImageButton = (ImageButton)view.findViewById(R.id.shareImageButton); 
    mImageButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Snackbar.make(v, "working on it", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 

My ImageButton находится в другом XML-файле. NEEEEEED HELP

+0

Что вы на самом деле пытаетесь DO- код, который вы будет установлен onclicklistener, но он не добавит представление в пользовательский интерфейс. Для этого нужно добавить представление родительскому объекту. –

+0

, но как добавить представление к родительскому? даже я хочу показать сообщение на консоли, он не работает. –

+0

xml, из которого это происходит, заключается в том, что xml уже завышен? –

ответ

0

Основываясь на том, что предусмотрено, вы не добавляете представление в родительский макет.

Предполагая, что родительский макет уже завышены, вы бы просто добавить вид, что-то вроде этого

yourParentView.addView(view); 

Это, вероятно, не будет иметь желаемого эффекта, хотя, как это будет, скорее всего, (при условии, что вы не играли с гравитацией родителя) поместите вид в верхнем левом углу.

Вам нужно будет разместить представление, где хотите, с помощью LayoutParams.

Пример будет RelativeLayout.LayoutParams или LinearLayout.LayoutParams

После того, как вы выбрали и создали свой layoutParams, вы бы использовать это вместо

yourParentView.addView(view, createdLayoutParams); 
+1

Я нашел проблему. Я переместил код для установки прослушивателя в мой класс recycleview.adapter, и он работает хорошо. –

0

Используйте свой другой single_row.xml, включив его в свой файл main_activity.xml.

паста ниже код внутри файла main_activity.xml:

<include layout:"@layout/single_row.xml" /> 

Теперь вы можете использовать свой ImageButton как обычно, как и другие мнения в main_activity.xml. добавьте ниже код в свой метод onCreate() MainActivity.class.

ImageButton mImageButton = (ImageButton)findViewById(R.id.shareImageButton); 
mImageButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Snackbar.make(v, "working on it", Snackbar.LENGTH_LONG) 
       .setAction("Action", null).show(); 
    } 
}); 
+0

Я нашел проблему. Я переместил код для установки слушателя в мой класс recycleview.adapter, и он хорошо работает –

+0

Рад, что вы получили решение. Надеюсь, что мой ответ поможет другим. :) –

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