当声明按钮时,不同的片段无法识别

时间:2015-03-24 11:36:32

标签: android android-layout android-fragments android-button

声明按钮时出现问题。

我会尝试尽可能具体地解释。

在我的主布局中,我有一个包含辅助布局的片段。我有几个按钮。

我的意图是我的主要fichero.java声明片段中的按钮。

这里我们把主要的布局:

<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:baselineAligned="false">

<fragment
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:name="josejuansosarodriguez.radioecca.conocecanarias.TrueoFalseFragment"
    android:id="@+id/fragmentTrueFalse"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true" />


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Grp1"
    android:id="@+id/textGrp1"
    android:textSize="25sp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="5dp"/>


<fragment
    android:layout_width="fill_parent"
    android:layout_height="450dp"
    android:name="josejuansosarodriguez.radioecca.conocecanarias.Grp1FragmentP1"
    android:id="@+id/fragmetaskGRP1"
    android:layout_below="@+id/textGrp1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="5dp" />

</RelativeLayout>

这里我们放置了具有按钮的辅助布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:id="@+id/fragment_TrueorFalse">


    <Button
        android:layout_width="120sp"
        android:layout_height="wrap_content"
        android:textAllCaps="false"
        android:text="@string/buttontrue"
        android:id="@+id/buttontrue"
        android:layout_marginLeft="40dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true" />

    <Button
        android:layout_width="120sp"
        android:layout_height="wrap_content"
        android:textAllCaps="false"
        android:text="@string/buttonfalse"
        android:id="@+id/buttonfalse"
        android:layout_marginRight="40dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true" />

</RelativeLayout>

在这里,我离开了我的主要活动:

public class Grp1Fragment extends Fragment {

private Button buttonTrue;
private Button buttonFalse;
private Button buttonNextAsk;

private View view;


public Grp1Fragment() {
    // Required empty public constructor


}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {


   buttonTrue = (Button) view.findViewById(R.id.buttontrue);
    buttonTrue.setOnClickListener(this);

// Inflate the layout for this fragment
    view = inflater.inflate(R.layout.fragment_grp1, container, false);
    return view;
}

我在以下问题中找到了我的问题: buttonTrue.setOnClickListener(this); 消息显示:视图无法应用于josejuansosarodriguez.radioecca.conocecanarias.Grp1Fragment

我希望我传播得很远。 非常感谢你的一切,这个论坛很棒。

2 个答案:

答案 0 :(得分:0)

void setOnClickListener(View.OnClickListener l) 需要一个OnClickListener,Grp1Fragment不是。

使用类似

的内容
buttonTrue.setOnClickListener(new View.OnClickListener() {
    void onClick(View v) {
        ... // reaction on the button
    }
});

答案 1 :(得分:0)

试试这个:

请注意,您必须首先对布局进行充气,以便可以访问布局的小部件。

然后你可以“绑定”小部件,在这种情况下,最好将监听器设置为按钮。

如果您需要将其更改为Toast或代码

,我会为您设置一个日志
public class Grp1Fragment extends Fragment {

private Button buttonTrue;
private Button buttonFalse;
private Button buttonNextAsk;

private View view;


public Grp1Fragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

     // Inflate the layout for this fragment
    view = inflater.inflate(R.layout.fragment_grp1, container, false);

    //Declare your widgets (Buttons)
    buttonTrue = (Button) view.findViewById(R.id.buttontrue);
    buttonFalse = (Button) view.findViewById(R.id.buttonfalse);


    //Set the Listeners
    buttonTrue.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                //Toast or Log, or whateber you need
                Log.d("Fragment1" ,  "Button: True");
            }
        });

    buttonFalse.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            //Toast or Log, or whateber you need
            Log.d("Fragment1" ,  "Button: FAlse");
        }
    });


    //return the view
    return view;
}