Javascript 从片段内的按钮打开活动(已解决!)

Javascript 从片段内的按钮打开活动(已解决!),javascript,android,Javascript,Android,嘿,我对编码非常陌生,我试图从片段中的按钮打开一个活动(这个片段来自导航抽屉活动),但实际上我不能。每当我试图打开我的应用程序时,它就会崩溃,所以我做了一些研究,并找到了方法。问题是,idk在我的代码中放置解决方案的位置。我一直试图将它放在片段中(无处不在,但不起作用),因此一旦单击“活动”按钮,它就会打开活动。这是我的代码,但是每次我在应用程序中点击我的片段时,这个尝试就会崩溃。ServicosFragment构造函数中的编码是idk要放在哪里的地方,因为在其他地方它会给我不同的编码错误,这是

嘿,我对编码非常陌生,我试图从片段中的按钮打开一个活动(这个片段来自导航抽屉活动),但实际上我不能。每当我试图打开我的应用程序时,它就会崩溃,所以我做了一些研究,并找到了方法。问题是,idk在我的代码中放置解决方案的位置。我一直试图将它放在片段中(无处不在,但不起作用),因此一旦单击“活动”按钮,它就会打开活动。这是我的代码,但是每次我在应用程序中点击我的片段时,这个尝试就会崩溃。ServicosFragment构造函数中的编码是idk要放在哪里的地方,因为在其他地方它会给我不同的编码错误,这是我唯一可以正确编码并使应用程序崩溃的地方。有人能帮忙吗

公共类服务片段扩展片段{
公共服务碎片(){
Button buttonCriacaoeGestao=getView().findViewById(R.id.buttonCriacaoeGestao);
buttonCriacaoeGestao.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent Intent=新的Intent(getActivity(),criacaoegestoactivity.class);
星触觉(意向);
}
});
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
返回充气机。充气(R.layout.fragment_servicos,容器,假);
}

}
我认为问题在于构造函数。构造器试图在片段获得视图之前打开新活动。请在没有任何构造函数的情况下这样尝试

public class ServicosFragment extends Fragment {

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

         Button buttonCriacaoeGestao=getView().findViewById(R.id.buttonCriacaoeGestao);
         buttonCriacaoeGestao.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             Intent intent = new Intent(getActivity(), CriacaoeGestaoActivity.class);
             startActivity(intent);
         }});

         return inflater.inflate(R.layout.fragment_servicos, container, false);     
    }
}

当你下次提问时,请尝试提供你的应用程序崩溃时会出现哪些异常。

如果有帮助,请告诉我

public class ServicosFragment extends Fragment {
    Button buttonCriacaoeGestao;
    public  ServicosFragment (){

    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        buttonCriacaoeGestao = view.findViewById(R.id.buttonCriacaoeGestao);
    }

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

    buttonCriacaoeGestao.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), CriacaoeGestaoActivity.class);
                startActivity(intent);
            }
        });

        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_servicos, container, false);
    }   
}

您试图在膨胀视图之前访问该视图,这将使您的应用程序崩溃

在这里,您试图在构造函数上的按钮上注册一个单击侦听器。但是当构造函数运行时,视图还没有膨胀,因此您不能访问不在那里的内容,而是将代码移动到onViewCreated方法,如下所示

并且在充气机之前删除return关键字,否则方法将在设置click listener上的按钮之前终止

**编辑-**我真的很抱歉,我忽略了我必须在片段中的onCreateView方法中返回一个视图(与活动中的onCreate方法不同)。所以我在这里编辑了答案,这一定有用。将视图保存在视图对象中,最后需要在方法末尾返回它

您还可以通过视图访问xml中的按钮和其他组件,如代码所示

public class ServicosFragment extends Fragment {

public  ServicosFragment (){



}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_servicos, container, false);

    Button buttonCriacaoeGestao = view.findViewById(R.id.buttonCriacaoeGestao);
    buttonCriacaoeGestao.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getActivity(), CriacaoeGestaoActivity.class);
            startActivity(intent);
        }
    });
    return view;
    }


}

谢谢你的回答!我尝试插入代码,但不幸的是,当我点击片段时,它就崩溃了,应用程序突然关闭,什么也没说:(嘿,非常感谢你的回答!不幸的是,应用程序仍然存在同样的问题,只要我试着点击片段,它就会关闭应用程序:(可能我在应用程序的其他部分做了一些错误,我会重新校对所有内容。问题是,如果不查看您遇到的错误,很难知道发生了什么。您能粘贴stacktrace吗?您好,非常感谢您的回答。我像这里一样尝试了此代码,但在倒数第二个“}”出现了错误),它说缺少返回语句。我尝试键入
View View=inflater.inflate(R.layout.fragment\u servicos,container,false);
并在最后返回视图,但它也不起作用。我试图做的另一件事是将代码从构造函数内部移动到您建议的位置,但在'Button buttonCriacaoeGestao=getView().findViewById(R.id.buttonCriacaoeGestao)处出错´说整个事情都是一个无法访问的语句。你知道吗?不要使用getView().findviewbyd()而使用view.findviewbyd()现在你可以访问你的视图对象了,我也更改了答案中的代码。如果这不起作用,请告诉我,并附加堆栈跟踪。它起作用了!!我真是太感谢你了。代码不起作用真的让我很烦,我对自己很失望。再次,非常感谢你的帮助!!!不客气,t当你下次询问错误时,为什么不在这里发布logcat错误呢?