2014-05-16 54 views
0

我正在写和使用android studio的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 Android的设置:的onclick到addStringClickHandler 并在片段i类创建该函数,但是当我执行应用程序 时出现运行时无法找到方法的错误addStringClickHandler(view)

我错过了什么?

回答

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

相关问题