有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在活动2(安卓)中更改活动1中传递的对象的值

我正试图在安卓 studio上制作一个基本的应用程序。 我有两个活动页面和三节课

第一类主要活动。java属于它的活动1

2类市场活动。java及其活动2

第三类角色扮演。java在这个类中我们有字符特性

在活动1中,我们有3个按钮

Activity 1

按钮1的目的是攻击当你点击按钮1时,角色将获得2点攻击强度。我们的目的是当你在市场活动中购买物品,而角色受到攻击时,它将获得2+2攻击力

在角色扮演方面。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
    }
}

以及主要活动。爪哇:

characterAction.setKilo(10);            // set the weight 10

characterAction.setSaldiriGucu(0);      // set the attack power 0

characterAction.setHareketSayisi(10);   // set the energy 10

我把这些东西从MaintActivity传过来。java对市场活动的影响。爪哇:

characterAction = (CharacterAction) getIntent().getSerializableExtra("CharacterAction");

这里没有问题

让我们看看活动2(市场)

Activity 2上面说如果你买了这把剑,每次攻击时你的攻击力增益将增加2倍

我的问题是:

我在MarketActivity上找到了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攻击加值。但事实并非如此。关于市场活动。java说它成功购买了,但当我打开活动1并试图攻击它时,每次攻击仍然提供+2攻击强度

我怎样才能增加这些

谢谢你的阅读


共 (2) 个答案

  1. # 1 楼答案

    我通过更改公共int saldiriBonus=2;//解决了我的问题攻击加成 对公共静态int saldiriBonus=2; 我所做的一切。 将方法更改为静态

  2. # 2 楼答案

    有几种可能的方法可以解决这个问题,我将从*

    startActivityForResult()
    

    方式1:

    在MarketActivity更新对象中使用cache,并在cache中保存更新,接下来在第一个活动中,您应该从缓存中更新对象,例如wtih:

    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 is from https://github.com/johncarl81/parceler