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

When declaring buttons different fragments does not recognize

我在声明按钮时遇到问题。

我会尽量解释得具体一些。

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

我的意图是我主要 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>

在这里我留下我的主要activity:

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(这个); 消息显示:View cannot be in Applied to josejuansosarodriguez.radioecca.conocecanarias.Grp1Fragment

希望我传播的远。 非常感谢你所做的一切,这个论坛太棒了。

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

使用类似

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

试试这个:

请注意,您必须首先扩充布局以使布局的小部件可访问。

然后您可以 "bind" 小部件,最后在这种情况下,将侦听器设置为按钮。

我给你设置了一个Log,如果你需要把它改成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;
}