好的,所以我最近刚刚使用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;
}
好的,我有一个Link
和LinkedList
以及Champions
.java文件等等。我的问题是,当我尝试循环(注释掉的while循环)时,它只是打破了应用程序,当我模拟它时没有任何显示。但我不知道如何将下一个问题放到页面上。我是否必须为每个问题创建一个屏幕?我是否必须一遍又一遍地写出每个问题?任何帮助表示赞赏。对不起,如果我不是很清楚。 (和代码,即使我编码,我真的很喜欢,我不想删除代码,直到我确定知道我不需要它。)
答案 0 :(得分:1)
您的while
循环最有可能阻止UI线程。这将导致您的应用无法响应并挂起/强制关闭/崩溃。
您需要重构代码,以便不使用阻止while
循环。
尝试简单地显示问题,然后根据用户提供答案的事件(我不知道是否涉及单击按钮或在框中输入文本或数字)。如果答案是正确的,请提出下一个问题并进行显示。
你想让你的应用程序更多地受事件驱动,不要等待循环寻找答案。
我认为这篇文章可能有一些有用的花絮:http://developer.android.com/guide/practices/design/responsiveness.html