从游戏切换屏幕返回到主要活动



嗨,尽管我看到了一些关于链接活动或返回的主题,但我还是无法返回到活动中工作。当用户答错答案或时间不够时,我有点落后于应用程序,它会转到游戏中,用它记下分数并在游戏中显示,如果它有助于解决我的问题,下面是它的工作代码:主要类别:

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

相关内容

  • 没有找到相关文章

最新更新