2011-12-29 7 views
3

私は最近、この冬の休暇中にEclipseを使用してこのAndroidアプリの開発に入ったので、これは非常に簡単な質問であれば私を許してください。質問の上でクイズアプリをループする

私はこれまでアプリに質問をしています(私はプログラムで質問を作成します)、ユーザーは答えを入力して、非常に簡単に送信します。私の問題は、どのようにして次の質問に進むことができるのですか?

package first.project; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 
//import java.util.Random; 

public class FirstProjectActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Champion ahri = new Champion(0, "Ahri", "I am a Mage", false); 
    Champion akali = new Champion(1, "Akali", "Ninja stuff", true); 
    Champion alistar = new Champion(2, "Alistar", "I am a cow", false); 
    final LinkedList champions = new LinkedList(); 
    champions.insert(ahri); 
    champions.insert(akali); 
    champions.insert(alistar); 
    question = (TextView) findViewById(R.id.question); 
    txtname = (EditText) findViewById(R.id.txt_name); 
    blah = (Button) findViewById(R.id.btn_clickme); 
    quit = (Button) findViewById(R.id.quit); 
    quit.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      finish(); 
     } 
    }); 
    Champion tmp; 
    //Random randomGenerator = new Random(); 
    //int randomNumber = randomGenerator.nextInt(2); 
    //tmp = champions.find(randomNumber); 
    /*while (tmp.hasBeenCalled) { 
     randomNumber = randomGenerator.nextInt(2); 
     tmp = champions.find(randomNumber); 
    }*/ 
    /*tmp.hasBeenCalled = true; 
    while (tmp.name == null) { 
     Toast.makeText(getBaseContext(), "You have completed the quiz!", Toast.LENGTH_SHORT); 
     blah.setOnClickListener(new View.OnClickListener() {    
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Toast.makeText(getBaseContext(), "You have completed the quiz!", Toast.LENGTH_SHORT); 
      } 
     }); 
    }*/ 
    tmp = champions.getFirst(); 
    // while (tmp.name != null); { 
     question.setText(tmp.says); 
     final Champion temp = tmp; 
     blah.setOnClickListener(new View.OnClickListener() {    
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       String str1 = txtname.getText().toString(); 
       if (champions.isCorrect(temp.name, str1)) { 
        Toast.makeText(getBaseContext(), getString(R.string.correct), Toast.LENGTH_SHORT).show(); 
       } 
       else 
        Toast.makeText(getBaseContext(), getString(R.string.incorrect), Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     //tmp.hasBeenCalled = true; 
     tmp = champions.getNext(); 
     //question.setText(tmp.says); 
    // } 

} 

private EditText txtname; 
private Button blah; 
private Button quit; 
private TextView question;  
} 

[OK]をので、私はLinkLinkedListChampions .javaファイルとすべてのことがあります。ここに私はこれまで持っているものです。私の問題は、私が(私はそれをシミュレートするときに何も表示されません)、それはちょうどアプリを壊して、whileループをコメントアウトされているループをしようとするときです。しかし、私はページに次の質問をどうやって得られるか分からない。質問ごとに画面を作成する必要がありますか?私は各質問を何度も何度も書かなければならないのですか?どんな助けもありがとうございます。私は非常に明確でない場合は申し訳ありません。 (そして、コード、私は実際にコードするときでも私はパクのラットです、私は確かに私がそれを必要としないことを知るまで、私はコードを削除したくない)。

+0

yはuは、データベース内のすべての質問に入れて、次々にロードいけませんか? –

+0

私は実際にこのサイトで探していて、誰かがそれをやっているのを見ました。私はそれについて全く考えなかった。これは、私はそれを試してdefされますので、私はjavaアプリケーションを教えるだけです。 – LiverpoolFTW

答えて

1

whileループがUIスレッドをブロックしている可能性があります。これにより、あなたのアプリが応答せず、ハングアップ/クローズ/クラッシュすることになります。

ブロックwhileループを使用しないようにコードをリファクタリングする必要があります。

質問を表示して、ユーザーが回答を出したときの行動を考えてください(ボタンをクリックするか、ボックスにテキストや数字を入力するかどうかはわかりません)。答えが正しい場合は、次の質問を表示してください。

アプリケーションをより多くのイベント駆動型にしたい場合は、回答のためにループするのをやめてください。

私はこの記事はいくつかの有用な一口を持っているかもしれないと思う

http://developer.android.com/guide/practices/design/responsiveness.html

+0

ありがとう、これは実際に私がそれをやったと思っていた最初の方法でした。私はループでそれをやろうとした理由は、私が50以上の質問をしても、それぞれの文を次々と書きたいとは思っていないので、より多くの質問に展開したいからです。 – LiverpoolFTW

関連する問題