我有一个Voice
课,它扩展了Activity
,并包含一个计数器。当用户正确回答时,计数器会通过counter++;
public class Voice extends Activity implements OnClickListener{
ListView lv;
static final int check = 111;
int counter_score;
TextView txView;
MediaPlayer ourSong;
ImageView display;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.letter_a);
initialize();
}
private void initialize() {
lv = (ListView)findViewById(R.id.lvVoiceReturn);
Button b = (Button)findViewById(R.id.imageButtonSelector);
txView = (TextView)findViewById(R.id.counter);
b.setOnClickListener(this);
counter_score=0;
}
此分数被捆绑并传递到字符串“您的分数为1”中的下一个活动“内容”。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == check && resultCode == RESULT_OK) {
ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
lv.setAdapter( new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));
if(results.contains("hey") || results.contains("a") || results.contains("ay")) {
//toast referenced to xml the after 400ms
counter_score++;
txView.setText("Your Score is" + " " + counter_score);
AlertDialog dialogBuilder = new AlertDialog.Builder(this).create();
dialogBuilder.setTitle("AWSOME");
dialogBuilder.setMessage("¡Your current score is" + counter_score);
dialogBuilder.setIcon(R.drawable.ic_mark);
dialogBuilder.show();
ourSong = MediaPlayer.create(Voice.this, R.raw.rightsound2);
ourSong.start();
Thread timer = new Thread() {
public void run(){
try {
sleep(2500);
}catch (InterruptedException e){
e.printStackTrace();
} finally {
String score = txView.getText().toString();
Bundle keeper = new Bundle();
keeper.putString("key", score);
Intent putScore = new Intent(Voice.this, What.class);
putScore.putExtras(keeper);
startActivity(putScore);
}
}
};
timer.start();
}
}
下一个Activity
,What
获取此Bundle
并使用setText(gotScore)
public class What extends Activity implements OnClickListener {
ListView lv;
static final int check = 111;
private int counter_score;
TextView txView;
MediaPlayer ourSong;
ImageView display;
String gotScore;
String classes[] = {"What", "Pagina", "What", "example3", "example4", "example5",
"example6"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.letter_b);
initialize();
Bundle gotKeeper = getIntent().getExtras();
gotScore = gotKeeper.getString("key");
txView.setText(gotScore);
}
private void initialize() {
// TODO Auto-generated method stub
lv = (ListView)findViewById(R.id.lvVoiceReturn);
Button b = (Button)findViewById(R.id.imageButtonSelector);
txView = (TextView)findViewById(R.id.counter);
b.setOnClickListener(this);
..这是事情变坏的时候:(
在What
我还有另一个与计数器相关的问题。当用户正确回答时,计数器会通过counter++;
添加一个,但确实如此。但是,它会将txview
string
更改为“您的分数为1”。我无法将它添加到从字符串中的上一个活动传递的计数器结果中,以便What
上的计数器显示“您的分数为2”。这将传递给Bundle keeper
中的下一个活动,该活动保持总分。
我已经阅读了一些关于传递int
经文string
的教程,但是他们使用的一些代码如getInt
无法识别。我很难过。
答案 0 :(得分:0)
您要捆绑并传递给什么活动不是计数器而是字符串&#34;您的分数是1&#34;。如果你想在下一个活动中增加那个数字,那么你应该只发送整数值并构造你需要的任何字符串。
我已经阅读了一些关于传递一个int与一个字符串的内容。但是他们使用的一些代码如getInt是无法识别的......我很难过......
我不太确定我知道你的意思getInt()无法识别。无论如何,在将反击从一个活动传递到另一个活动时,让自己更容易。如果它是一个int并且您计划在接收活动中像int一样进行操作,那么将它作为int添加到bundle中。例如:
Bundle keeper = new Bundle();
keeper.putInt("key", counter_score);
并从包中检索它:
Bundle gotKeeper = getIntent().getExtras();
int score = gotKeeper.getInt("key");
答案 1 :(得分:0)
如果您要在不同的活动中共享“全局”类,并使用它来保持变量“同步”,该怎么办?
例如 - Globals.java:
public class Globals {
public int counter_score;
}
然后使用 Globals.counter_score
当然,您也可以将该共享类用于其他变量和函数 - 例如常见操作。
正如评论者指出的那样,这种方法并不特别好 - 我忘记了代码只是简单引用,并且没有自己“活着”来保存其他活动的信息(感谢您纠正我的一,我还在学习...)
但是,可以更好地工作的是在启动第二个活动时在intent中传递counter_score变量的当前状态 - 例如:
IntentToLaunchTheOtherActivity( counter_score );
然后可能会将变量传回上一个活动,如果之后发生了变化......
答案 2 :(得分:0)
我明白了。基本上我需要TJ Third建议将keeper.putString("key", counter_score);
转换为keeper.putInt("key", counter_score);
的内容,我还需要将收到的包转换为“What”活动中的int。在“What”活动中,我重命名为int counter_score;
和int gotKeeper;
(这是String gotKeeper),而不是调用counter_score = 0;既然传递的bundle是一个int,我调用了counter_score = gotKeeper;在initialize()下;所以计数器分数等于上一个活动“语音”产生的结果。
现在当用户正确回答时,反问译++;在现有的counter_score中添加一个并捆绑它并将其发送到下一个活动,并冲洗重复。
static final int check = 111;
int counter_score;
TextView txView;
MediaPlayer ourSong;
ImageView display;
int gotKeeper;
String classes[] = {"What", "Pagina", "What", "example3", "example4", "example5",
"example6"};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.letter_b);
initialize();
Bundle gotKeeper = getIntent().getExtras();
gotKeeper = gotScore.getInt("key");
counter_score = gotKeeper;
再次向大家致以建议和见解。帮助新手。