2014-05-16 95 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

相關問題