[英]How to pass two Strings from one Activity to another Activity in Android
[英]How can i change the value of a passed object from activity one at activity two (android)
我正在尝试在android studio上制作一个基本的应用程序。 简而言之,我有两个活动页面和三个班级。
1类MainActivity.java是其所属的活动1
2类MarketActivity.java其所属活动2
3类CharacterAction.java在此类中,我们具有字符功能
在活动1中,我们有3个按钮
按钮1的目的是攻击,当您单击按钮1时,角色会获得2攻击力。我们的目的是当您在市场活动中购买物品而角色受到攻击时会获得2 + 2攻击力。
在CharacterAction.java类中,我们有以下这些:
private int kilo; // Weight
private int hareketSayisi; //Energy
public int saldiriGucu; //Attack power
public int saldiriBonus = 2; // it specifies how much attack power you will gain in one attack.
public int getKilo() { return kilo; }
public int getHareketSayisi() { return hareketSayisi; }
public int getSaldiriGucu() { return saldiriGucu; }
public String savas() {
if (hareketSayisi > 0) { // if energy > 0
hareketSayisi--; // energy - 1
saldiriGucu = saldiriGucu + saldiriBonus; // attackpower = attackpower + attackbonus it will add to attack power + 2
kilo--; //weight - 1
return "karakter savasti"; //return character attacked
} else {
return "Yeterli hareket yok"; // there is no energy left
}
}
和MainActivity.java:
characterAction.setKilo(10); // set the weight 10
characterAction.setSaldiriGucu(0); // set the attack power 0
characterAction.setHareketSayisi(10); // set the energy 10
我将这些对象从MaintActivity.java传递给MarketActivity.Java:
characterAction = (CharacterAction) getIntent().getSerializableExtra("CharacterAction");
这里没有问题。
让我们看一下活动2(市场)
它说,如果您购买这些剑,则每次攻击都会使攻击力收益提高2倍。
我的问题开始了:
我在MarketActivity.java上获得了onClick()方法
@Override
public void onClick(View view) {
if (view.getId() == btnSatinAl1.getId()) {
tvSuccesful.setVisibility(View.VISIBLE);
if (characterAction.saldiriGucu > 10) { // if attackpower > 10
characterAction.saldiriBonus = (characterAction.saldiriBonus * 2); // attack power bonus * 2
tvSuccesful.setText("Satın alım başarılı"); // Succesful
btnSatinAl1.setVisibility(View.INVISIBLE);
} else {
tvSuccesful.setText("Yetersiz saldiri gücü"); // Not enough attack power.
}
}
}
在这些onClick()方法上,它需要在成功购买剑的同时增加+2攻击加成。但它不会。每次攻击。
我如何增加这些?
谢谢阅读。
有几种方法可以解决此问题,我将以*开头MarketActivity
startActivityForResult()
方法1:
在MarketActivity更新对象中使用缓存,然后将更新保存在缓存中,接下来在第一个Activity中,您应该从缓存中更新对象,例如:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
when (requestCode to resultCode) {
Navigator.XXX_REQUEST_CODE to Activity.RESULT_OK -> {
refreshDataFromCache()
}
}
}
方式2:
如果您不想使用缓存,请在结果意图的数据中传递更新的对象,然后更新对象和下一个UI:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
when (requestCode to resultCode) {
Navigator.XXX_REQUEST_CODE to Activity.RESULT_OK -> {
data?.let {
val xxx = Parcels.unwrap<XXX>(data.getParcelableExtra(xActivity.DATA_TAG))
item = Parcels.unwrap<XXX>(data.getParcelableExtra(xActivity.DATA_TAG))
}
}
}
}
Parcels.unwrap来自https://github.com/johncarl81/parceler
我通过更改public int saldiriBonus = 2解决了我的问题; //对公共静态int saldiriBonus = 2的攻击加值; 我所做的一切。 将方法更改为static 。 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.