当声明按钮不同的片段无法识别(When declaring buttons different fr

2019-10-29 06:27发布

声明按钮时,我有一个问题。

我会尽量解释尽可能具体。

在我的主要布局我有包含二次布局片段。 在这我有几个按钮。

我的本意是,我的主要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(本); 贺电:查看不能在应用到josejuansosarodriguez.radioecca.conocecanarias.Grp1Fragment

我希望我已经远播。 非常感谢你的一切,这个论坛是惊人的。

Answer 1:

尝试这个:

请注意,您必须首先膨胀的布局,使入店布局的窗口小部件。

然后你就可以“绑定”的小部件,并finallly在这种情况下,将听众的按钮。

我设置你登录,如果你需要将其更改为吐司,或代码

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


Answer 2:

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

使用类似

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


文章来源: When declaring buttons different fragments does not recognize