嗨,尽管我看到了一些关于链接活动或返回的主题,但我还是无法返回到活动中工作。当用户答错答案或时间不够时,我有点落后于应用程序,它会转到游戏中,用它记下分数并在游戏中显示,如果它有助于解决我的问题,下面是它的工作代码:主要类别:
public void fail(){
{
Intent myIntent = new Intent(MainActivity.this,gameover.class);
myIntent.putExtra("number", score);
MainActivity.this.startActivity(myIntent);
finish();
}
gameover类:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gameover);
re_run = (Button) findViewById(R.id.retry);
EndScore = (TextView) findViewById(R.id.show);
int getVal;
getVal = getIntent().getExtras().getInt("number");
String s = String.valueOf( getVal );
EndScore.setText(s);
}
现在,我之所以分享上面的工作代码,是因为我感觉到将用户和分数带到gameover屏幕的意图,是扰乱了重试/返回代码,如下所示:
private void setButtonOnClickListeners(){
re_run.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Intent retry = new Intent(getApplicationContext(),
MainActivity.class);
startActivity(retry);
}
});
}
从这些主题中我可以发现,这些似乎是正确的方法。但是当代码运行时,rerun按钮什么也不做。有什么帮助吗?
您使用"setButtonOnClickListeners()
"来实现setOnClickListener,从而覆盖onClick。但是你什么时候调用setButtonOnClickListeners的?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gameover); re_run = (Button)
findViewById(R.id.retry);
EndScore = (TextView) findViewById(R.id.show);
int getVal;
getVal = getIntent().getExtras().getInt("number");
String s = String.valueOf( getVal );
EndScore.setText(s);
setButtonOnClickListeners();
}
您可以检查您的OnClick是否正常工作,在LogCat中添加日志行。Log.d("GameOver", "Retry onclick ok");
您正在查找一个在膨胀(R.id.retry)之前的视图。
将命令序列更改为:
super.onCreate(savedInstanceState);
setContentView(R.layout.gameover);
re_run = (Button) findViewById(R.id.retry);
同时尝试将意图更改为:
Intent retry = new Intent(GameOver.this, MainActivity.class);
retry.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
我个人使用startActivityForResult(Intent)
在屏幕上开始游戏,一旦玩家输入了自己的名字或按下了什么或用Back退出了活动,它就会向onActivityResult(..)
返回一个值,我在其中调用了finish()
。
编辑:
游戏结束了,所以我开始使用进行活动
Intent i = new Intent();
i.putExtra("Score", scoreCount);
i.setClass(context, HighScoreInputActivity.class);
context.startActivityForResult(i, 0);
然后,当你插入分数和其他东西时,你用关闭GameActivity
中的游戏屏幕
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
this.finish();
}