从gameover屏幕返回主要活动

时间:2014-08-25 14:25:02

标签: java android android-intent return main

大家好,即使我已经看过几个关于链接活动或回归的话题,但我无法让我回到活动中去工作。当用户得到一个错误的答案或者时间不足以进入游戏时,我会将应用程序放回到游戏中,并将游戏结果显示在游戏中,如果它有助于解决我的问题,那么这就是工作代码问题: 主类:

 public void fail(){
        {
            Intent myIntent = new Intent(MainActivity.this,gameover.class);
            myIntent.putExtra("number", score);


            MainActivity.this.startActivity(myIntent);
            finish();

        }

gameover class:

  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);

            }
        });
}

从我可以从这些主题中找到的这些似乎是正确的方法。但是当代码运行时,re_run按钮什么都不做。有什么帮助吗?

3 个答案:

答案 0 :(得分:1)

您使用“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");

答案 1 :(得分:0)

你在观看之前找到了一个观点(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);

答案 2 :(得分:0)

我个人使用startActivityForResult(Intent)在屏幕上开始游戏,一旦玩家输入了他的名字或按下了某些内容或者退出了活动,那么它会返回一个值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();
}