这是我的calc_fragment.xml文件的一部分,
<Button
android:id="@+id/b7"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="2dp"
android:background="@drawable/roundedbutton"
android:fontFamily="sans-serif-thin"
android:text="Add"
android:textColor="@color/light_grey"
android:textSize="45sp"
android:onClick="clicked"/>
与以下片段链接:
public class CalcFragment extends Fragment {
private TextView textView;
private String text;
private Vibrator vibe;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.calc_fragment, container, false);
return rootView;
}
public void clicked (View v){ <--- "Method clicked is never used"
...content...
}
我收到警告“点击方法永远不会被使用”,但我的按钮与此方法相关联
答案 0 :(得分:1)
Fragment
与其活动紧密相关。因此,xml中的上述方法声明基本上会在Activity
类中查找该方法。其中一种方法是您可以明确地链接您的方法和按钮:
public class CalcFragment extends Fragment {
private TextView textView;
private String text;
private Vibrator vibe;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.calc_fragment, container, false);
View myButton = rootView.findViewById(R.id.b7);
rootView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clicked(v);
}
});
return rootView;
}
public void clicked (View v){ // Your method
...content...
}
摆脱&#39; android:onClick =&#34;点击&#34;&#39;你的xml中的属性。
答案 1 :(得分:0)
这是因为用于处理点击的XML代码不适用于Fragment
类,它目前仅适用于Activity
类。因此,永远不会调用此方法。有关详细信息,请参阅this question。
答案 2 :(得分:0)
在CalcFragment的onCreateView方法中,您需要在初始化rootView之后声明并初始化按钮:
Button b7 = (Button) rootView.findViewById(R.id.b7);
然后您需要一个onClickListener而不是定义您自己的单击方法。有两种方法可以点击按钮。
第一种方法:
您可以在onCreatView中设置onClickListener,如下所示:
b7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Do something
}
});
第二种方法:
您可以按如下方式定义onClickListener:
final View.OnClickListener b7OnClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
// Do something
}
};
使用第二种方法时,您需要像在第一种方法中那样设置onClickListener,但在这种情况下,您将传递您创建的onClickListener对象的名称。
示例:
b7.setOnClickListener(b7OnClickListener);