Fragment 实现单选题并判断案例全代码

在这里插入图片描述
首先设计questionfragment的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">


    <TextView
        android:id="@+id/question"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:textSize="20dp"
        />
    <RadioGroup
        android:id="@+id/choice"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <RadioButton
            android:id="@+id/choice_A"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="A"
            android:textSize="20dp"/>
        <RadioButton
            android:id="@+id/choice_B"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="A"
            android:textSize="20dp"/>
        <RadioButton
            android:id="@+id/choice_C"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="A"
            android:textSize="20dp"/>
        <RadioButton
            android:id="@+id/choice_D"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="A"
            android:textSize="20dp"/>
    </RadioGroup>
    <Button
        android:id="@+id/submit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="提交"
        android:textSize="20dp"/>
    <TextView
        android:id="@+id/answer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="answer"
        android:textSize="20dp"/>

</LinearLayout>

然后main_Activity.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

   <fragment
       android:id="@+id/question_frag"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:name="com.example.ruan.fragmentdanxuan.QuestionFragment"/>
</LinearLayout>

创建Question类

package com.example.ruan.fragmentdanxuan;

public class Question {
    private String question;
    private String[] choice;
    private String answer;
    public Question(String question, String[] choice, String answer) {
        this.question = question;
        this.choice = choice;
        this.answer = answer;
    }

    public String getQuestion() {
        return question;
    }

    public String[] getChoice() {
        return choice;
    }

    public String getAnswer() {
        return answer;
    }

    public void setQuestion(String question) {
        this.question = question;
    }

    public void setChoice(String[] choice) {
        this.choice = choice;
    }

    public void setAnswer(String answer) {
        this.answer = answer;
    }
}

然后是questionFragment控制question_fragment.xml布局

package com.example.ruan.fragmentdanxuan;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

public class QuestionFragment extends Fragment {
 private View view;
 private TextView tv_question;
 private RadioGroup rg_choice;
 private RadioButton rb_choice_A;
 private RadioButton rb_choice_B;
 private RadioButton rb_choice_C;
 private RadioButton rb_choice_D;
 private Button bt_submit;
 private TextView tv_answer;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
       view=inflater.inflate(R.layout.fragment_question,container,false) ;
       return view;
    }


    public void refreshQuestion(String question, String[] choice, final String answer){
        tv_question=(TextView)view.findViewById(R.id.question);
        rg_choice=(RadioGroup) view.findViewById(R.id.choice);
        rb_choice_A=(RadioButton)view.findViewById(R.id.choice_A);
        rb_choice_B=(RadioButton)view.findViewById(R.id.choice_B);
        rb_choice_C=(RadioButton)view.findViewById(R.id.choice_C);
        rb_choice_D=(RadioButton)view.findViewById(R.id.choice_D);
        bt_submit=(Button)view.findViewById(R.id.submit);
        tv_answer=(TextView)view.findViewById(R.id.answer);

        tv_question.setText(question);
        rb_choice_A.setText(choice[0]);
        rb_choice_B.setText(choice[1]);
        rb_choice_C.setText(choice[2]);
        rb_choice_D.setText(choice[3]);

        bt_submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String choiceAnswer=null;
                switch (rg_choice.getCheckedRadioButtonId()){
                    case R.id.choice_A:choiceAnswer="A";break;
                    case R.id.choice_B:choiceAnswer="B";break;
                    case R.id.choice_C:choiceAnswer="C";break;
                    case R.id.choice_D:choiceAnswer="D";break;
                    default:
                        Toast.makeText(getActivity(),"请选择一个答案",Toast.LENGTH_LONG).show();;
                }
                if (answer.equals(choiceAnswer)){
                    tv_answer.setText("正确");
                }else{
                    tv_answer.setText("错误");
                }
            }
        });
}

}

在MainActivity.class中

  package com.example.ruan.fragmentdanxuan;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;

import android.os.Bundle;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
private List<Fragment> fragments;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
   

       Question question=new Question("以下哪个标签用于在布局中添加Fragment",new String[]{"Fragment","fragment","TextView","FrameLayout"},"B");
       FragmentManager manager=getSupportFragmentManager();
       QuestionFragment fragment=(QuestionFragment) manager.findFragmentById(R.id.question_frag);     fragment.refreshQuestion(question.getQuestion(),question.getChoice(),question.getAnswer());

    }
}
发布了105 篇原创文章 · 获赞 37 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43615815/article/details/102874466