在 OncheckedChanged 中使用意图

Using intent inside OncheckedChanged

我可以知道我应该如何调用此行中下一个 activity 的意图吗?(案例 3) 它在开关的 OncheckedChanged 里面。

我遇到了错误

Home.this cannot be referenced from static context

我的activity如下:

......
.....

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = new View(this.getActivity());
            ARG_NUMBER = getArguments().getInt(ARG_SECTION_NUMBER, 0);

            switch (ARG_NUMBER) {
                case 1:
                    rootView = inflater.inflate(R.layout.fragment_home, container, false);
                    break;
                case 2:
                    rootView = inflater.inflate(R.layout.fragment_stamp, container, false);
                    break;
                case 3:
                    rootView = inflater.inflate(R.layout.fragment_setting, container, false);
                    //to be optimize
                    Switch passcode_switch = (Switch) rootView.findViewById(R.id.switch1);
                    passcode_switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                        @Override
                        public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                            if(isChecked){
                                Log.d("Switch State=", "" + "Is checked");
                                Toast.makeText(getActivity(), "Generated!", Toast.LENGTH_SHORT).show();

                                final Intent setup_passcode = new Intent(Home.this, Passcode.class);
                                startActivity(setup_passcode);

                            }else{
                                Log.d("Switch State=", "" + "NOT checked");

                            }
                        }
                    });
                    break;
            }
            return rootView;
....
....

我无法为该行调用意图:

final Intent setup_passcode = new Intent(Home.this, Passcode.class);
                                startActivity(setup_passcode);

改变

final Intent setup_passcode = new Intent(Home.this, Passcode.class);

final Intent setup_passcode = new Intent(getActivity(), Passcode.class);

使用 Fragment 中的 getActivity() 获取上下文。

显示toast的问题你可以自己解决

Toast.makeText(getActivity(), "Generated!", Toast.LENGTH_SHORT).show();

您正在使用 getActivity(),因此获取要在意图中使用的上下文的方法相同,您可以使用 getActivity 作为

final Intent setup_passcode = new Intent(getActivity(), Passcode.class);
startActivity(setup_passcode);