android-fragments 如何每次都能更改片段中的文本?对于每个问题都需要相同片段的测验应用程序

mrfwxfqh  于 2022-11-14  发布在  Android
关注(0)|答案(1)|浏览(131)

所以我正在做一个测验应用程序,当然,每个问题的布局看起来都是一样的,但问题和可能的答案会不同。我已经看到,在这种情况下使用片段将是合适的,我试图学习它,但它的混乱。有人能帮助我的语法等我如何改变问题的文本,按钮时,给一个问题和答案列表?

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

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

import java.util.ArrayList;

public class QuestionFragment extends Fragment {

    Button btnOption1, btnOption2, btnOption3, btnOption4;
    Button btnSubmit;
    TextView txtQuestion;

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

        View questionFragmentView = inflater.inflate(R.layout.question_fragment, container, false);

        btnOption1 = questionFragmentView.findViewById(R.id.btnOption1);
        btnOption2 = questionFragmentView.findViewById(R.id.btnOption2);
        btnOption3 = questionFragmentView.findViewById(R.id.btnOption3);
        btnOption4 = questionFragmentView.findViewById(R.id.btnOption4);
        btnSubmit = questionFragmentView.findViewById(R.id.btnSubmit);
        txtQuestion = questionFragmentView.findViewById(R.id.txtQuestion);

        return questionFragmentView;
    }
}

这是我创造的碎片。

如何每次都为新问题更改问题和按钮文本?
非常感谢!

ylamdve6

ylamdve61#

我建议您使用查看页面沿着片段的问题答案,并相应地管理您的要求。

public class QuestionPagerActivity extends ActionBarActivity
    implements ViewPager.OnPageChangeListener {

ViewPager mViewPager;
ArrayList<Question> mQuestions; // create custom model with all quetions and oprions data

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ActionBar actionBar = getSupportActionBar();

    actionBar.setDisplayHomeAsUpEnabled(true);
    setContentView(R.layout.question_pager_activity);

    FragmentManager fm = getSupportFragmentManager();

    mViewPager = (ViewPager) findViewById(R.id.viewPagerQuestion);
    mViewPager.setOnPageChangeListener(this);
    mViewPager.setAdapter(new QuestionAdapter(fm));
    onPageSelected(0);

    mQuestions = Quiz.get(getBaseContext()).getQuestions();

    int index = getIntent().getIntExtra(QuestionFragment.EXTRA_QUESTION_INDEX, 0);
    Question q = mQuestions.get(index);
    for (int i = 0; i < mQuestions.size(); i++) {
        if (mQuestions.get(i).getId() == q.getId()) {
            mViewPager.setCurrentItem(i);
        }
    }
}

@Override
protected void onPause() {
    super.onPause();
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}

@Override
protected void onResume() {
    super.onResume();
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}

private class QuestionAdapter extends FragmentStatePagerAdapter {

    private ArrayList<Question> mQuestions;

    private QuestionAdapter(FragmentManager fm) {
        super(fm);
        mQuestions = Quiz.get(getBaseContext()).getQuestions();
    }

    @Override
    public Fragment getItem(int i) {
        return  QuestionFragment.newInstance(i);
    }

    @Override
    public int getCount() {
        return mQuestions.size();
    }
}

@Override
public void onPageScrolled(int i, float v, int i2) { }

@Override
public void onPageSelected(int i) {
    setTitle(String.format("Question #%s", i + 1));
}

@Override
public void onPageScrollStateChanged(int state) {

    if (state == ViewPager.SCROLL_STATE_IDLE) {
        // Hide the soft keyboard.
        ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
                .hideSoftInputFromWindow(mViewPager.getWindowToken(), 0);

    }
}

}

相关问题