2016-05-22 2 views
0

ランダムなアクティビティを完全に停止する方法を知っていますか?私は5つのクラスと10の質問を持っています。正しい答えが与えられたら、私は次のランダムなクラスに移動し、以前のクラスが再び現れないようにしたい。すべてのランダムなクラスに最初に応答したら、Randomメソッドは終了しました。私はfinish()を試しましたが、うまくいきません。ボタンをクリックしても、すでに回答があった後も繰り返しクラスが取得されます。私のコードを見て、できるかどうかアドバイスしてください。 THX前のランダムなアクティビティが表示されないようにします。

パブリッククラスHomeActivityはAppCompatActivityを拡張{

TextView myTv; 
Button nextBtn; 
EditText myEt; 
Button playgameBtn; 

int mCounter = 0; 


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

    myTv = (TextView) findViewById(R.id.myTv); 
    nextBtn = (Button) findViewById(R.id.nextBtn); 
    playgameBtn = (Button) findViewById(R.id.playgameBtn); 
    myEt = (EditText) findViewById(R.id.myEt); 


    final String[] clazzes = new String[] {"Mark.class", "John.class", "Caleb.class", "Isaiah.class", "Jacob.class"}; 


    playgameBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      ArrayList<Class> activityList = new ArrayList<>(); 
      activityList.add(Mark.class); 
      activityList.add(John.class); 
      activityList.add(Caleb.class); 
      activityList.add(Isaiah.class); 
      activityList.add(Jacob.class); 


      Random generator = new Random(); 
      int number = generator.nextInt(5)*1; 

      Class activity = null; 

      switch (number){ 
       case 1: 
        activity = John.class; 
        break; 
       case 2: 
        activity = Caleb.class; 
        break; 
       case 3: 
        activity = Mark.class; 
        break; 
       case 4: 
        activity = Isaiah.class; 
        break; 
       default: 
        activity = Jacob.class; 
        break; 


      } 
      Intent intent = new Intent(getBaseContext(), activity); 



      startActivity(intent); 
      finish(); 

      } 

private void finish() { 
} 


    }); 


     } 



    } 
+0

あなたが断片を使用し、アンケートの保存処理と考えたことがありますか? –

+0

いいえ、フラグメントの処理方法についてはわかりません。 – user3055624

答えて

0

これは、プログラミングの良い方法ではありません。解決策は次のとおりです。コードから空のfinish関数を削除します。それを行うには

public class HomeActivity extends AppCompatActivity { 
TextView myTv; 
Button nextBtn; 
EditText myEt; 
Button playgameBtn; 

int mCounter = 0; 


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

myTv = (TextView) findViewById(R.id.myTv); 
nextBtn = (Button) findViewById(R.id.nextBtn); 
playgameBtn = (Button) findViewById(R.id.playgameBtn); 
myEt = (EditText) findViewById(R.id.myEt); 


final String[] clazzes = new String[] {"Mark.class", "John.class", "Caleb.class", "Isaiah.class", "Jacob.class"}; 
playgameBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 

     ArrayList<Class> activityList = new ArrayList<>(); 
     activityList.add(Mark.class); 
     activityList.add(John.class); 
     activityList.add(Caleb.class); 
     activityList.add(Isaiah.class); 
     activityList.add(Jacob.class); 


     Random generator = new Random(); 
     int number = generator.nextInt(5)*1; 

     Class activity = null; 

     switch (number){ 
      case 1: 
       activity = John.class; 
       break; 
      case 2: 
       activity = Caleb.class; 
       break; 
      case 3: 
       activity = Mark.class; 
       break; 
      case 4: 
       activity = Isaiah.class; 
       break; 
      default: 
       activity = Jacob.class; 
       break; 


     } 
     Intent intent = new Intent(getBaseContext(), activity); 



     startActivity(intent); 
     finish(); 

     } 

}); 


    } 



} 
0

一つの方法は、アイテムをランダム化する代わりにCollections.shuffle()を使用して、アクティビティを呼び出した後、リストの最後の項目を「ポップ」されます。

 ArrayList<Class> activityList = new ArrayList<>(); 
     activityList.add(Mark.class); 
     activityList.add(John.class); 
     activityList.add(Caleb.class); 
     activityList.add(Isaiah.class); 
     activityList.add(Jacob.class); 
     Collections.shuffle(activityList); 

    playgameBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 


     Intent intent = new Intent(getBaseContext(), activityList.get(0)); 
     startActivity(intent); 
     activityList.remove(0); 

     } 

     [...] 

私は、あなたが通常この種のものを行うための推奨される方法であるフラグメントを使用したくないので、あなたはsetOnClickListener方法

+0

私はフィニッシュ()を呼んではいけません。また、空の仕上げ機能を削除して、他のユーザーが提案したようにします。 –

0

外ArrayListにオブジェクトを追加する必要があることに注意してくださいあなたがすでに提供しているものに非常に基本的な追加例を与えるでしょう。

//make a list as an instance variable 
private static List<Integer> displayedClasses; 

//In your onClick event get the random number as follows 
int number=getRandomNumber(); 
//getRandomNumber() will return -1 if all classes are displayed. Handle it here. 
if(number==-1){ 
    displayedClasses.clear(); 
    //do something else 
    return; 
} 
//store the number in the above list 
if(displayedClasses==null)displayedClasses=new ArrayList<>(); 
displayedClasses.add(new Integer(number)); 

//continue with the rest of the statement 

getRandomNumberMethod

private int getRandomNumber(){ 
    if(l.size()>=5) { 
     return -1; 
    } 
    Random random=new Random(); 
    int num=0; 
    while(l.contains(num)){ 
     num=random.nextInt(5)*1; 
    } 
    return num; 
} 
関連する問題