首先设计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());
}
}