2016-06-30 1 views
-1

私は約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と同じコードにあります

+0

本当に10個の別々のフラグメントクラスが必要ですか?各質問の論理はほとんど同じではないのですか? –

+0

私はUIのようなウィザードを実行できるように、10個の別々のフラグメントを使用しています。質問のロジックは次のとおりです。質問から尋ねられた質問を選択し、その答えを "私のMainActivityで使用している "ID"のようなものです。 – masterplox

答えて

0

実行中の各フラグメントトランザクションはaddToBackStack()を使用しています。 replace()を使用していても、以前のフラグメントに移動します。 addToBackStack()メソッドを削除すると、フラグメントはバックスタックに配置されません。

また、サイドノートは、ifステートメントを一緒に連鎖しています。私はあなたが実際にif() {} else if() {}ブロックを望むかもしれないと思う。

+0

私のフラグメントはウィザードビュー(前のボタンと次のボタン)のように機能していますが、前のボタンにはpopBackStackをコードしていますのでaddToBackStackが必要です。あなたには他の解決策がありますか? – masterplox

関連する問題