片段点击

时间:2020-02-21 16:39:08

标签: java android android-fragments

我正在创建一个遇到错误的应用程序。我想在按钮上添加OnclickListner。此按钮位于片段类上。从这个片段类我想继续学习另一个类。代码如下:

片段类代码(JAVA)

public class ModeFragment extends Fragment implements TitledFragment {

private ModeViewModel viewModel;


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

    try {
        viewModel = BackAwareApplication.getContainer().getInstance(ModeViewModel.class);
    } catch (Exception e) {
        e.printStackTrace();
    }


    View v = inflater.inflate(R.layout.mode_fragment, container, false);

    Button btn_monitoring = (Button) v.findViewById(R.id.btn_belt_monitoring);

    btn_monitoring.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(ModeFragment.this , BluetoothActivity.class);
            startActivity(intent);
        }
    });

片段类XML:

 <Button
                android:id="@+id/btn_belt_monitoring"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Belt Monitoring"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintVertical_bias="0.96" />

,错误是:

error: no suitable constructor found for Intent(ModeFragment,Class<BluetoothActivity>)
constructor Intent.Intent(String,Uri) is not applicable
(argument mismatch; ModeFragment cannot be converted to String)
constructor Intent.Intent(Context,Class<?>) is not applicable
(argument mismatch; ModeFragment cannot be converted to Context)

I read this link but did't solve the problem

1 个答案:

答案 0 :(得分:0)

您需要在getActivity()的末尾添加ModeFragment.this

像这样> ModeFragment.this.getActivity()

只需调用-> getActivity()

Intent intent = new Intent(ModeFragment.this.getActivity(), BluetoothActivity.class); 
ModeFragment.this.getActivity().startActivity(intent);

https://developer.android.com/guide/components/intents-filters