When declaring buttons different fragments does not recognize

不想你离开。 提交于 2019-12-25 04:29:18

问题


I have a problem when declaring a button.

I will try to explain as specific as possible.

In my main Layout I have a Fragment containing a secondary Layout. In which I have several buttons.

My intention is that my main fichero.java to declare the buttons within the fragment.

Here we put the main Layout:

<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>

Here we put the secondary Layout that has the buttons:

<?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>

And here I leave the my main 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;
}

My problem I find in the following line: buttonTrue.setOnClickListener (this); The message reads: View can not be in Applied to josejuansosarodriguez.radioecca.conocecanarias.Grp1Fragment

I hope I have spread far. Thank you very much for everything, this forum is amazing.


回答1:


Try this:

Note that you have to FIRST inflate the layout to make accesible the widgets of the layout.

Then you can "bind" the widgets, and finallly in this case, set the listeners to the buttons.

I set you a Log, if you need change it to Toast, or code

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;
}



回答2:


void setOnClickListener(View.OnClickListener l) requires a OnClickListener, which Grp1Fragment is not.

Use something like

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


来源:https://stackoverflow.com/questions/29231635/when-declaring-buttons-different-fragments-does-not-recognize

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!