可点击的TextView的Android问题

时间:2014-03-11 20:00:51

标签: android

我有一个片段和带有两个TextView的LinearLayout。当我点击LinearLayout时,我想做点什么。但我的应用程序崩溃了。

这是我的Java类:

public class MyClass extends Fragment implements LocationListener {
    /**
     * The fragment argument representing the section number for this
     * fragment.
     */
    public static final String ARG_SECTION_NUMBER = "section_number";

    public NejblizsiBary() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main_dummy,
                container, false);

        return rootView;
    }

    public void detaily(View v){


    }

这是我的XML:

<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity$DummySectionFragment" >

<TextView
    android:id="@+id/section_label"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
     />

<LinearLayout
    android:id="@+id/ll"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#ffdf33"
    android:clickable="true"
    android:focusable="true"
    android:onClick="detaily"
    android:orientation="horizontal" >
    <TextView
        android:id="@+id/nazev"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:duplicateParentState="true"
        android:text="Restaurace u Androida"
        android:textColor="#000000"
        android:textSize="40sp"
        android:textStyle="normal" />

    <TextView
        android:id="@+id/adresa"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10sp"
        android:duplicateParentState="true"
        android:text="Imaginární 12"
        android:textColor="#000000"
        android:textSize="20sp"
        android:textStyle="normal" />
</LinearLayout>
</RelativeLayout>

1 个答案:

答案 0 :(得分:2)

是的,如果您使用android:onClick属性并在片段类中定义方法,它将导致崩溃。

最终的原因是因为android:onClick是通过在视图的上下文中查找方法来实现的,该方法通常是您的Activity。视图没有片段的概念,因此他们无法在片段上找到方法或知道他们应该看什么片段。

解决方案:

有两种可能的解决方案:

  1. 定义单击侦听器并将其设置为LinearLayout。
  2. 在Activity中定义一个替换片段的方法。