在我的应用程序中,有很多活动被称为关卡。一种活动是奖励活动。当我赢得1级时,奖励活动开始。现在我想重播1级。为此,我使用了getExtra()。单击重播按钮时,我的应用程序崩溃。

Houselevel1.java

 public void getReward(){
    if(count == 3) {
        Intent intent = new Intent("com.creatives.arfa.revealthesecretsgame.Reward");
        intent.putExtra("activity", "level1");
        startActivity(intent);

    }

}


HouseLevel2.java

    public void getReward(){
    if(count == 3) {
        Intent intent = new Intent("com.creatives.arfa.revealthesecretsgame.Reward");
        intent.putExtra("activity", "level2");
        startActivity(intent);
    }

}


Reward.java

  public void replayLevel() {
    replay = (ImageButton) findViewById(R.id.replay);
    Intent intent= getIntent();
    activity = intent.getStringExtra("activity");
    replay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View paramView) {
            if(activity.equals("level2")){
                Intent intent = new Intent("com.creatives.arfa.revealthesecretsgame.HouseLevel2");
                startActivity(intent);
            }

            if(activity.equals("level1")){
                Intent intent = new Intent("com.creatives.arfa.revealthesecretsgame.Houselevel1");
                startActivity(intent);
            }

        }
    });
}

最佳答案

使用您发布的Java代码,在Reward.java文件中,您试图创建另一个Intent Object,其名称与在其上方的作用域中声明的名称相同。因此,构建将永远不会成功。

另外,在声明意图时,必须传递activity_name.class文件。

您可以尝试以下操作:

1)HouseLevel1.java

public void getReward(){
    if(count == 3) {
        Intent intent = new Intent(getApplicationContext(), com.creatives.arfa.revealthesecretsgame.Reward.class);
        intent.putExtra("activity", "level1");
        startActivity(intent);

    }
}


2)HouseLevel2.java

public void getReward(){
    if(count == 3) {
        Intent intent = new Intent(getApplicationContext(), com.creatives.arfa.revealthesecretsgame.Reward.class);
        intent.putExtra("activity", "level2");
        startActivity(intent);

    }
}


3)Reward.java

public void replayLevel() {
    replay = (ImageButton) findViewById(R.id.replay);
    Intent intent= getIntent();
    activity = intent.getStringExtra("activity");
    replay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View paramView) {
            if(activity.equals("level2")){
                Intent intent = new Intent(getApplicationContext(), com.creatives.arfa.revealthesecretsgame.HouseLevel2.class);
                startActivity(intent);
            }

            else if(activity.equals("level1")){
                Intent intent = new Intent(getApplicationContext(), com.creatives.arfa.revealthesecretsgame.Houselevel1.class);
                startActivity(intent);
            }
        }
    });
}


另外,如果您只是使用Reward.java文件获取先前意图的数据,执行一些计算并将一些数据发送回调用或父活动,则可以简单地使用startActivityForResult()方法,该方法需要关心您要手动执行的操作。

这是一篇小文章,可能会帮助您解决问题


  http://www.vogella.com/tutorials/AndroidIntent/article.html#retrieving-result-data-from-a-sub-activity

08-03 20:07