在以下ShopFragment中按Back返回,设置RadioButton为选中状态,为什么会闪退?

在以下ShopFragment中按Back返回,设置RadioButton为选中状态,为什么会闪退?

Logcat说以下红色框处有空指针引用

http://img1.sycdn.imooc.com//climg/5f8f0131096c3bcb09270400.jpg


com.testapp.tuangou.fragment;

android.os.Bundle;
android.view.LayoutInflater;
android.view.View;
android.view.ViewGroup;
android.widget.AdapterView;
android.widget.ListView;
android.widget.RadioButton;
android.widget.TextView;
android.widget.Toast;

androidx.fragment.app.Fragment;
androidx.fragment.app.FragmentTransaction;

com.testapp.tuangou.Food;
com.testapp.tuangou.Icon;
com.testapp.tuangou.MyAdapter;
com.testapp.tuangou.R;
com.testapp.tuangou.util.DataUtil;

java.util.ArrayList;

ShopFragment Fragment {
    String = ;
    ListView ;
    ArrayList<Food> = ;

    View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout., container, );

        initData();

        = view.findViewById(R.id.);

        MyAdapter<Food> lvAdapter = MyAdapter<Food>(, R.layout.) {
            bindView(ViewHolder holder, Food obj) {
                holder.setImageResource(R.id., obj.getIconId());
                holder.setText(R.id., obj.getName());
                holder.setText(R.id., obj.getFeature());
                holder.setText(R.id., +String.(obj.getPrice()));
                holder.setText(R.id., obj.getSpecial());
                holder.setText(R.id., +String.(obj.getSold()));
            }
        };
        .setAdapter(lvAdapter);

        .setOnItemClickListener(AdapterView.OnItemClickListener() {
            onItemClick(AdapterView<?> parent, View view, position, id) {
                Toast.(getContext(),.get(position).getName(),Toast.).show();
            }
        });

        view.findViewById(R.id.).setOnClickListener(View.OnClickListener() {
            onClick(View v) {
                getFragmentManager() != ;
                FragmentTransaction transaction = getFragmentManager().beginTransaction();
                transaction.replace(R.id.,IndexFragment());
                transaction.commit();
                RadioButton indexBtn = v.findViewById(R.id.);
                indexBtn.setChecked();
            }
        });
        view;
    }

    initData() {
        = ArrayList<Food>();
        (i = ; i < DataUtil..; i++) {
            .add(Food(DataUtil.[i], DataUtil.[i],
                    DataUtil.[i], DataUtil.[i], DataUtil.[i], DataUtil.[i]));
        }
    }
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
提问者 Charles_hzr 2020-10-21 10:26:11

以下错误可以看到空指针异常,但是我不知道为什么会空?

http://img1.sycdn.imooc.com//climg/5f8f9c1b0976c08016810580.jpg

  • 由于你的这个fragment对应的视图,并不包含这个indexBtn吧?所以才报的空指针
    2020-10-21 17:13:10
  • 提问者 Charles_hzr 回复 好帮手慕雪 #2
    我改为以下这样了,老师你看行不行?运行是有效果的。 RadioButton indexBtn = Objects.requireNonNull(getActivity()).findViewById(R.id.index); Log.d(TAG, "onClick: "+indexBtn); indexBtn.setChecked(true);
    2020-10-21 19:18:16
  • 好帮手慕雪 回复 提问者 Charles_hzr #3
    是Activity中的UI吧?那从getActivity()取是没有问题的
    2020-10-22 09:25:40
好帮手慕雪 2020-10-21 09:36:38

请同学把报错信息一起贴一下哦。另外indexBtn获取到了吗?是不是为空了呢。


  • 提问者 Charles_hzr #1
    indexBtn获取为什么是空的呢?报错信息贴在上面了,老师帮忙看看,要怎么才能获取到正确的indexBtn?
    2020-10-21 14:23:42
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师