Android:onClick方法的“方法永远不会被使用”警告

时间:2016-08-14 13:46:07

标签: android android-fragments onclicklistener

这是我的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...
}

我收到警告“点击方法永远不会被使用”,但我的按钮与此方法相关联

3 个答案:

答案 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);