私は約10個のフラグメントを持つアプリを持っています。私はコミュニケータを使って情報を渡しました。今、私はアプリを実行すると、主なアクティビティは、Communicatorインターフェイスを実装して以来、すべてのコミュニケータが実装されています。今、oncreateの主な活動で、コミュニケータの中のメソッドで他の機能を使用したいと思っています.6つのメソッドがすべて作成されているか、インスタンスが作成されています。私は断片に戻るボタンを使用しているときに気づいた、私は戻るボタンを6回押して出なければならなかった。修正がありますか、助けてください。アンドロイド - コミュニケータの状態が他の場合は使用できません
Communicatorインターフェイス:
public interface Communicator {
public void requestQuestionsId1(String data);
public void requestQuestionsId2(String data);
public void requestQuestionsId3(String data);
public void requestQuestionsId4(String data);
public void requestQuestionsId5(String data);
public void requestQuestionsId6(String data);
public void show(int data);
}
メインActivity.java
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener,
Communicator,
QuestionOne.OnFragmentInteractionListener,
QuestionTwo.OnFragmentInteractionListener,
QuestionThree.OnFragmentInteractionListener,
QuestionFour.OnFragmentInteractionListener,
QuestionFive.OnFragmentInteractionListener,
QuestionSix.OnFragmentInteractionListener,
QuestionSeven.OnFragmentInteractionListener,
QuestionEight.OnFragmentInteractionListener,
QuestionNine.OnFragmentInteractionListener,
QuestionTen.OnFragmentInteractionListener
{
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int ageValue = Integer.parseInt(newAge);
//Log.d("MainActivity-AgeValue: ", String.valueOf(ageValue));
if(requestPossibilityId(ageValue, newSex, newBelizean) == 1){
//documents.add(2 photos(2x2 inches)
//documents.add(application form)
//documents.add(Form 4a)
//documents.add(Form 4b)
Toast.makeText(this, "Possibility 1", Toast.LENGTH_SHORT).show();
requestQuestionsId1("Minor Belizean");
}else if(requestPossibilityId(ageValue, newSex, newBelizean) == 2){
//documents.add(2 photos(2x2 inches)
//documents.add(application form)
//documents.add(Form 4a)
//documents.add(Form 4b)
Toast.makeText(this, "Possibility 2", Toast.LENGTH_SHORT).show();
requestQuestionsId2("Minor Non Belizean");
}else if(requestPossibilityId(ageValue, newSex, newBelizean) == 3){
//documents.add(2 photos(2x2 inches)
//documents.add(application form)
//documents.add(Form 4a)
//documents.add(Form 4b)
Toast.makeText(this, "Possibility 3", Toast.LENGTH_SHORT).show();
requestQuestionsId3("Adult Male Belizean");
}else if(requestPossibilityId(ageValue, newSex, newBelizean) == 4){
//documents.add(2 photos(2x2 inches)
//documents.add(application form)
//documents.add(Form 4a)
//documents.add(Form 4b)
Toast.makeText(this, "Possibility 4", Toast.LENGTH_SHORT).show();
requestQuestionsId4("Adult Male Non Belizean");
}else if(requestPossibilityId(ageValue, newSex, newBelizean) == 5){
//documents.add(2 photos(2x2 inches)
//documents.add(application form)
//documents.add(Form 4a)
//documents.add(Form 4b)
Toast.makeText(this, "Possibility 5", Toast.LENGTH_SHORT).show();
requestQuestionsId5("Adult Female Belizean");
}else if(requestPossibilityId(ageValue, newSex, newBelizean) == 6){
//documents.add(2 photos(2x2 inches)
//documents.add(application form)
//documents.add(Form 4a)
//documents.add(Form 4b)
Toast.makeText(this, "Possibility 6", Toast.LENGTH_SHORT).show();
requestQuestionsId6("Adult Female Non Belizean");
}else
Toast.makeText(this, "Error, could not load user informatio", Toast.LENGTH_SHORT).show();
//getPersonalInfo(ageValue, newSex, newBelizean);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_item_home) {
Bundle bundle = new Bundle();
String myMessage = "Stackoverflow is cool!";
bundle.putString("message", myMessage);
QuestionOne questionOne = new QuestionOne();
questionOne.setArguments(bundle);
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionOne, questionOne.getTag()).commit();
} else if (id == R.id.nav_item_profile) {
} else if (id == R.id.nav_item_location) {
Intent intent = new Intent(MainActivity.this, MapsActivity.class);
startActivity(intent);
} else if (id == R.id.nav_item_about_and_help) {
AboutAndHelp aboutAndHelp= new AboutAndHelp();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, aboutAndHelp, aboutAndHelp.getTag()).commit();
} else if (id == R.id.nav_item_office_info) {
ContactFragment contactFragment= new ContactFragment();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, contactFragment, contactFragment.getTag()).commit();
} else if (id == R.id.nav_item_contact_us) {
UserSubmitForm userSubmitForm= new UserSubmitForm();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, userSubmitForm, userSubmitForm.getTag()).commit();
}
}
@Override
public void requestQuestionsId1(String data) {
/* Bundle bundle = new Bundle();
bundle.putString("message", data);*/
if(Objects.equals(data, "Minor Belizean")){
QuestionOne questionOne = new QuestionOne();
FragmentManager firstManager = getSupportFragmentManager();
firstManager.beginTransaction().replace(R.id.containerView, questionOne, questionOne.getTag()).commit();
}if(Objects.equals(data, "questionOneYes")){
QuestionFive questionFive = new QuestionFive();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionFive, questionFive.getTag()).addToBackStack(null).commit();
}if(Objects.equals(data, "questionOneNo")){
QuestionTwo questionTwo = new QuestionTwo();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionTwo, questionTwo.getTag()).addToBackStack(null).commit();
}if(Objects.equals(data, "questionTwoYes")){
//documents.add(police report)
//documents.add(form 6)
QuestionFive questionFive = new QuestionFive();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionFive, questionFive.getTag()).addToBackStack(null).commit();
}if(Objects.equals(data, "questionTwoNo")){
//documents.add(previous passport)
QuestionThree questionThree = new QuestionThree();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionThree, questionThree.getTag()).addToBackStack(null).commit();
}if(Objects.equals(data, "questionThreeSeverelyDamaged")){
//documents.add(police report)
//documents.add(form 6)
QuestionFive questionFive = new QuestionFive();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionFive, questionFive.getTag()).addToBackStack(null).commit();
}if(Objects.equals(data, "questionThreePartiallyDamaged")){
//documents.add(form 6)
QuestionFive questionFive = new QuestionFive();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionFive, questionFive.getTag()).addToBackStack(null).commit();
}if(Objects.equals(data, "questionThreeNotDamaged")){
QuestionFour questionFour = new QuestionFour();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionFour, questionFour.getTag()).addToBackStack(null).commit();
}if(Objects.equals(data, "questionFourYes")){
QuestionFive questionFive = new QuestionFive();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionFive, questionFive.getTag()).addToBackStack(null).commit();
}if(Objects.equals(data, "questionFourNo")){
QuestionFive questionFive = new QuestionFive();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionFive, questionFive.getTag()).addToBackStack(null).commit();
}if(Objects.equals(data, "questionFiveAdoption")){
//documents.add(adoption certificates)
QuestionSix questionSix = new QuestionSix();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionSix, questionSix.getTag()).addToBackStack(null).commit();
}if(Objects.equals(data, "questionFiveVitalBirth")){
//documents.add(birth certificates)
QuestionSix questionSix = new QuestionSix();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionSix, questionSix.getTag()).addToBackStack(null).commit();
}if(Objects.equals(data, "questionSixParent")){
//documents.add(parent ID)
QuestionNine questionNine = new QuestionNine();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionNine, questionNine.getTag()).addToBackStack(null).commit();
}if(Objects.equals(data, "questionSixGuardian")){
//documents.add(legal guardianship)
//documents.add(guardianship id)
QuestionNine questionNine = new QuestionNine();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionNine, questionNine.getTag()).addToBackStack(null).commit();
}if(Objects.equals(data, "questionSixNone")){
Toast.makeText(this, "Cannot Apply", Toast.LENGTH_SHORT).show();
}if(Objects.equals(data, "questionNineYes")){
//documents.add(deed poll required)
QuestionTen questionTen = new QuestionTen();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionTen, questionTen.getTag()).addToBackStack(null).commit();
}if(Objects.equals(data, "questionNineNo")){
QuestionTen questionTen = new QuestionTen();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionTen, questionTen.getTag()).addToBackStack(null).commit();
}if(Objects.equals(data, "questionTenYes")){
//documents.add(medical papers)
Toast.makeText(this, "End of the app", Toast.LENGTH_SHORT).show();
}if(Objects.equals(data, "questionTenNo")){
Toast.makeText(this, "End of the app", Toast.LENGTH_SHORT).show();
}
/* QuestionTwo questionTwo = new QuestionTwo();
questionTwo.setArguments(bundle);
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.containerView, questionTwo, questionTwo.getTag()).addToBackStack(null).commit();
Toast.makeText(this, data, Toast.LENGTH_SHORT).show();*/
}
@Override
public void onFragmentInteraction(Uri uri) {
Toast.makeText(this, (CharSequence) uri, Toast.LENGTH_SHORT).show();
}
public int requestPossibilityId(int age, String sex, String nationality){
Integer requestQuestionId = 0;
if(age < 16 && Objects.equals(nationality, "Belizean")){
requestQuestionId = 1;
Log.d("MainActivity", "Under 16 Belizean");
}if(age < 16 && Objects.equals(nationality, "Non Belizean")){
requestQuestionId = 2;
Log.d("MainActivity", "Under 16 Non Belizean");
}if(age >= 16 && Objects.equals(sex, "Male") && Objects.equals(nationality, "Belizean")){
requestQuestionId = 3;
Log.d("MainActivity", "Adult Male Belizean");
}if(age >= 16 && Objects.equals(sex, "Male") && Objects.equals(nationality, "Non Belizean")){
requestQuestionId = 4;
Log.d("MainActivity", "Adult Male Non Belizean");
}if(age >= 16 && Objects.equals(sex, "Female") && Objects.equals(nationality, "Belizean")){
requestQuestionId = 5;
Log.d("MainActivity", "Adult Female Belizean");
}if(age >= 16 && Objects.equals(sex, "Female") && Objects.equals(nationality, "Non Belizean")){
requestQuestionId = 6;
Log.d("MainActivity", "Adult Female Non Belizean");
}
Log.d("MainActivity-Id: ", String.valueOf(requestQuestionId));
return requestQuestionId;
}
}
SO wouldnので、私は、5行方不明requestQuestionsId2,3,4,5(文字列データ)を脱ぎました私はそれを入れさせません。基本的にrequestQuestionId1と同じコードにあります
本当に10個の別々のフラグメントクラスが必要ですか?各質問の論理はほとんど同じではないのですか? –
私はUIのようなウィザードを実行できるように、10個の別々のフラグメントを使用しています。質問のロジックは次のとおりです。質問から尋ねられた質問を選択し、その答えを "私のMainActivityで使用している "ID"のようなものです。 – masterplox