Java 如何处理onClick-in片段

Java 如何处理onClick-in片段,java,android,xml,android-fragments,Java,Android,Xml,Android Fragments,这是我第一次尝试碎片,我无法处理android:onClick 我在片段XML中有一个按钮,如下所示 <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/save_keywords_button" android:id="@+id/save_keywords"

这是我第一次尝试碎片,我无法处理android:onClick

我在片段XML中有一个按钮,如下所示

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/save_keywords_button"
        android:id="@+id/save_keywords"
        android:layout_marginTop="340dp"
        android:background="#FF2E7D32"
        android:textColor="#FFFFFF"
        android:typeface="normal"
        android:onClick="myLogic" />

我搜索了许多结果,但无法得到处理onClick事件的确切解决方案

我的问题是,如何获取按钮的ID并编写myLogic方法。 FindViewById()在片段中不起作用,我应该在哪里编写该方法? 在片段中还是在我的活动中

尝试添加方法

public void myLogic(View v)
android:onClick=“myLogic”
不会在片段内调用方法
myLogic
。使用
OnClickListener
来处理此类事件

参见以下参考资料


更好的方法是对片段类实现
OnClickListener
,并在片段中重写
onCreateView
,将侦听器分配给按钮

通过在XML布局中放置
onClick
属性,加载的活动将在活动中查找元素,而不是在片段中。这将引发异常

我建议阅读一些片段活动层次结构,以了解何时可以访问片段中的元素

public class StartFragment extends Fragment implements OnClickListener{

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

    View v = inflater.inflate(R.layout.fragment_start, container, false);

    Button b = (Button) v.findViewById(R.id.save_keywords);
    b.setOnClickListener(this);
    return v;
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.save_keywords:

        ...

        break;
    }
}
}

引用自:

如果需要在fragmen中获取视图,可以执行此操作
getView().findViewById(R.id.foo)仅在调用了
onCreateView()
之后。如果在xml中指定
onClick
,则无需在程序中编写指向该方法的任何链接,只需在活动中实现该方法。

访问此链接正如您所说,我编写了一个方法“public void myLogic(视图v)”在main Activity中,但当我单击按钮java.lang.IllegalStateException:找不到方法myLogic(视图)时出现此错误在android的父级或祖先上下文中:在id为“save_keywords”@Uday的视图类android.support.v7.widget.AppCompatButton上定义的onClick属性,我们需要片段和活动的代码来查看错误。手动设置onclick listener是个好主意。如果您将在代码中拼写错误方法名称,将不会调用该方法。将其添加到my mainActivity中,并在点击按钮时出现此错误无法在android的父或祖先上下文中找到方法myLogic(视图):在视图类android.support.v7.widget.AppCompatButton上定义的onClick属性,id为“save\u keywords”