从片段内的按钮打开一个活动(解决了!)。

嘿,我真的是个编码新手,我想从一个片段中的按钮打开一个活动(这个片段来自导航抽屉活动),但我真的做不到。每当我试图打开我的应用程序时,它就会崩溃,所以我做了一些研究,并看到了这样做的方法。问题是,我不知道在我的代码中该把解决方案放在哪里。我一直在尝试把它放在片段里面(到处都是,但没有用),所以一旦它的按钮被点击,它就会打开活动。这是我的编码,但每次我在应用程序中点击我的片段时,这个尝试都会崩溃。ServicosFragment构造函数里面的编码是一个不知道放在哪里的地方,因为其他地方都会给我不同的编码错误,这是我唯一能让编码正确的地方,只是让应用程序崩溃。谁能帮帮我?

public class ServicosFragment extends Fragment {

    public  ServicosFragment (){
        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);
            }
        });


    }


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


        }


}

解决方案:

你正试图在膨胀视图之前访问视图,这应该会使你的应用程序崩溃。

这里你试图在构造函数上的Button上注册一个点击监听器。但是当构造函数运行时,视图还没有膨胀,所以你不能访问不存在的东西,相反,将代码移到onViewCreated方法中,如下所示。

而且还要去掉 inflater 前的 return 关键字,否则该方法会在设置点击监听器的按钮之前终止。

**编辑 – **我真的很抱歉,我忽略了在片段中的onCreateView方法中必须返回一个视图(与活动中的onCreate方法不同)。所以我在这里编辑了答案,这一定能行。你把视图保存在一个View对象中,最后你需要在方法结束时返回它。

而且你也可以通过视图访问你的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;
    }


}

给TA打赏
共{{data.count}}人
人已打赏
未分类

>90%的时间花在'线程.锁'对象的'获取'方法上。

2022-9-13 14:18:37

未分类

我如何授权谷歌应用脚本中的谷歌语音转文本?

2022-9-13 14:18:39

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索