2014-05-16 2 views
0

Я пишу и проект Android 4.4, используя андроид-студию.добавьте onclick прослушиватель к кнопке в xml-фрагменте

Я новичок в идее фрагментов и пытаюсь создать простое приложение с помощью кнопки, которую обработчик кликов отправляет в журнал.

это класс фрагмента

public static class PlaceholderFragment extends Fragment { 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main_menu, container, false); 
     return rootView; 
    } 

    public void addStringClickHandler(View v) { 
     Log.d("tag","hello"); 
    } 
} 

это Формуляр фрагмента XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" 
tools:context="com.tuxin.myalcoholist.myalcoholist.myalcoholist.MainMenuActivity$PlaceholderFragment"> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/add_drink" 
    android:id="@+id/add_drink" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="36dp" 
    android:onClick="addStringClickHandler" /> 
</RelativeLayout> 

, как вы можете видеть, я установить в XML андроиде: OnClick для addStringClickHandler и в классе фрагмента я создала эту функцию, но когда я выполняю приложение , я получаю сообщение об ошибке, что среда выполнения не смогла найти метод addStringClickHandler (просмотреть)

Что мне не хватает?

ответ

3

Ваш обработчик обработчика должен принадлежать Деятельности, в которой размещен ваш фрагмент. Просто переместите метод addStringClickHandler().

Если вы хотите иметь метод прослушивания во фрагменте, вы должны установить слушателя в коде, подобном этому.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_main_menu, container, false); 
    rootView.findViewById(R.id.add_drink).setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.d("tag","hello"); 
     } 
    }); 
    return rootView; 
} 
0

Попытка зарегистрировать метод onClick при раздувании вида.

View rootView = inflater.inflate(R.layout.fragment_main_menu, container, false); 
rootView.findViewById(R.id.add_drink).setOnClickListener(new OnClickListener() { 
    public void onClick(View view) { 
     // do what you need    
    } 
}); 
return rootView; 

Или вы можете установить фрагмент, чтобы быть на клик слушателя

View rootView = inflater.inflate(R.layout.fragment_main_menu, container, false); 
rootView.findViewById(R.id.add_drink).setOnClickListener(this); 
return rootView; 

, а затем сделать фрагмент реализации OnClickListener.

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