在我的应用中,有很多活动被称为关卡。一种活动是奖励活动。当我赢得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);
}
}
});
}
答案 0 :(得分:0)
如果您只想从活动1或活动2转到“奖励”活动,则抢些东西并将其发送回任一活动。 您要做的是 startActivityForResult 。您传递一个ID(常数)来执行您对“奖励”活动的操作,将需要返回的内容打包到捆绑中,然后将ActivtyResult设置为“确定”并关闭活动。 您的应用将返回给Activity1或2,无论谁调用它。在这些活动上,您将重写onActivityResult方法。在此,您将检查结果的来源ID是否是您在startActivityForResult上发送的ID,以及状态是否正常。 然后,您就可以对“奖励”活动进行任何设置。奖励活动无需知道它来自何处,只要能获取一些数据即可。因此,您以后可以拥有一个调用Reward活动的Activity3,而无需修改Reward活动。 在这里说明检查接受的答案。 How to manage `startActivityForResult` on Android?
答案 1 :(得分:0)
使用您发布的Java代码,在public void run(){
//Do some long running task once done
isReady.set(true);
}
文件中,您试图创建另一个Intent Object,其名称与在其上方的作用域中声明的名称相同。因此,构建将永远不会成功。
此外,当您声明意图时,必须传递Reward.java
文件。
您可以尝试的方法:
1)HouseLevel1.java
activity_name.class
2)HouseLevel2.java
public void getReward(){
if(count == 3) {
Intent intent = new Intent(getApplicationContext(), com.creatives.arfa.revealthesecretsgame.Reward.class);
intent.putExtra("activity", "level1");
startActivity(intent);
}
}
3)Reward.java
public void getReward(){
if(count == 3) {
Intent intent = new Intent(getApplicationContext(), com.creatives.arfa.revealthesecretsgame.Reward.class);
intent.putExtra("activity", "level2");
startActivity(intent);
}
}
此外,如果您只是使用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);
}
}
});
}
文件来获取先前意图的数据,执行一些计算并将一些数据发送回调用或父活动,那么您可以简单地使用{{ 1}}方法,它会注意您要手动执行的操作。
这是一篇小文章,也许可以帮助您解决问题