Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从扩展片段的类启动AppCompatActivity活动_Java_Android_Android Fragments - Fatal编程技术网

Java 从扩展片段的类启动AppCompatActivity活动

Java 从扩展片段的类启动AppCompatActivity活动,java,android,android-fragments,Java,Android,Android Fragments,我在这里读了很多关于从片段开始活动的帖子,尽管它们似乎都没有解决我的问题。正如我所说,我试图从一个扩展片段的类开始一个活动。此时,当我从xml中删除“android:onClick”时,这个按钮就死了,不允许我点击它。但是,当我将OnClick方法放入xml时,我收到以下错误: java.lang.IllegalStateException:在android的父或祖先上下文中找不到方法onClick(View):在视图类android.support.v7.widget.AppCompatBut

我在这里读了很多关于从片段开始活动的帖子,尽管它们似乎都没有解决我的问题。正如我所说,我试图从一个扩展片段的类开始一个活动。此时,当我从xml中删除“android:onClick”时,这个按钮就死了,不允许我点击它。但是,当我将OnClick方法放入xml时,我收到以下错误:

java.lang.IllegalStateException:在android的父或祖先上下文中找不到方法onClick(View):在视图类android.support.v7.widget.AppCompatButton上定义的onClick属性,id为“buttonViewDetails” 在android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327)中 在android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) 在android.view.view.performClick上(view.java:5653) 在android.view.view$PerformClick.run(view.java:22509) 位于android.os.Handler.handleCallback(Handler.java:751) 位于android.os.Handler.dispatchMessage(Handler.java:95) 位于android.os.Looper.loop(Looper.java:154) 位于android.app.ActivityThread.main(ActivityThread.java:6144) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)上 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

我不太清楚这意味着什么。以下是我尝试过的代码:

类扩展片段中的按钮XML:

 <Button
    android:id="@+id/buttonViewDetails"
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:background="@mipmap/info"
    android:layout_marginLeft="250dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentEnd="true"
    android:layout_marginEnd="14dp"
    android:layout_marginBottom="14dp" />
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View myInflatedView = inflater.inflate(R.layout.line_details, container, false);

    Bundle extras = getArguments();
    if (extras != null) {
        String linetype = extras.getString("LineType");
        TextView LT = (TextView) getActivity().findViewById(R.id.textViewLineType);
        LT.setText(linetype);

        Button InfoButton = (Button) getActivity().findViewById(R.id.buttonViewDetails);
        InfoButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getActivity(), VerifyLine.class);
                startActivity(intent);
            }
        });

    }

    return myInflatedView;
}
有人能帮我吗


谢谢

您正在对视图myInflatedView进行膨胀,并使用活动引用对该视图进行findViewById。因此,必须更改该getActivity并使用myInflatedView来查找视图。同时从xml中删除按钮的onClick

   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View myInflatedView = inflater.inflate(R.layout.line_details, container, false);

        TextView LT = (TextView) myInflatedView.findViewById(R.id.textViewLineType);
        Button InfoButton = (Button) myInflatedView.findViewById(R.id.buttonViewDetails);
        InfoButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getActivity(), VerifyLine.class);
                startActivity(intent);
            }
        });

        Bundle extras = getArguments();
        if (extras != null) {
            String linetype = extras.getString("LineType");
            LT.setText(linetype);
        }

        return myInflatedView;
    }

remove
android:onClick=“onClick”
希望您的活动具有视图为param的onClick方法,而不需要设置InfoButton.setOnClickListener(按钮只是过时了,没有点击或做任何事情?在片段中定义它是指扩展片段的java类吗?我怎么定义它?我是初学者!@AaronRogers3你应该阅读android文档。按钮应该是可点击的。当你膨胀片段的视图时,ID会出现在特定的页面中fragment..getActivity()将为您提供活动引用。我也尝试了此操作,但按钮仍然无法单击??删除此行android:onClick=“onClick”是的,我已经完成了:我将更新上面按钮的xml