java - Android Studio Value 不会传递给其他 Activity

标签 java android

我有一个问题。我在这里有一个简单的答题器,但“每次点击升级的点击次数”不会转移到其他 Activity 。我不知道为什么它不起作用。

代码如下:

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.content.Intent;

public class MainActivity extends AppCompatActivity {
    public static final int REQUEST_CODE_CURRENTCLICKS = 10;
   public int amountClicks = 0;
   public int incrementAmount = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btnClick = (Button) findViewById(R.id.btnClick);
        final TextView tvAmountClicks = (TextView) findViewById(R.id.tvAmoutClicks);
        Button btnShop = (Button) findViewById(R.id.btnShop);

        amountClicks = getIntent().getIntExtra("currentClicks", 0);
        incrementAmount = getIntent().getIntExtra("upgradedClicks", 1);
        tvAmountClicks.setText(""+amountClicks);


        btnClick.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                amountClicks += incrementAmount;
                tvAmountClicks.setText(""+amountClicks);

            }
        });
        btnShop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(),ShopActivity.class);
                intent.putExtra("currentClicks",amountClicks);
                startActivityForResult(intent, REQUEST_CODE_CURRENTCLICKS);
            }
        });
    }
}

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class ShopActivity extends AppCompatActivity {
  public int currentClicks;
   public int incrementAmount;
   public int upgradedClicks;
    public int upgradeCost = 10;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shop);

        currentClicks = getIntent().getIntExtra("currentClicks",0);

        final TextView tvCurrentClicks = (TextView) findViewById(R.id.tvCurrentClicks);
        tvCurrentClicks.setText(""+currentClicks);

        Button btnUpgrade = (Button) findViewById(R.id.btnUpgrade);
        btnUpgrade.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(upgradeCost > currentClicks)
                {
                    Context context = getApplicationContext();
                    CharSequence text = "You don't have enough Clicks";
                    int duration = Toast.LENGTH_SHORT;
                    Toast cantUpgrade = Toast.makeText(context, text,duration);
                    cantUpgrade.show();
                }
                else
                {
                  currentClicks -= upgradeCost;
                    upgradedClicks++;
                    tvCurrentClicks.setText(""+ currentClicks);

                }
                Intent intent = new Intent();
                intent.putExtra("currentClicks",currentClicks);
                intent.putExtra("upgradedClicks",upgradedClicks);

                setResult(RESULT_OK, intent);

            }
        });

    }
}

最佳答案

If I return back to the main activity, it doesnt return the "upgraded clicks" nor the "current clicks".

你有 startActivityForResult 因此你需要实现 onActivityResult

所以,你有这段代码

Intent intent = new Intent();
intent.putExtra("currentClicks",currentClicks);
intent.putExtra("upgradedClicks",upgradedClicks);

setResult(RESULT_OK, intent);
finish(); // Add finish() to end this Activity

这将返回到您检查请求代码的调用 Activity 。

public class MainActivity extends AppCompatActivity {
    public static final int REQUEST_CODE_CURRENTCLICKS = 10;
    public int amountClicks = 0;
    private TextView tvAmountClicks;

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // Check which request we're responding to
        if (requestCode == REQUEST_CODE_CURRENTCLICKS) {
            // Make sure the request was successful
            if (resultCode == RESULT_OK) {

                amountClicks = data.getIntExtra("currentClicks", 0);
                int upgradedClicks = data.getIntExtra("upgradedClicks", 1);
                tvAmountClicks.setText(""+amountClicks);

            }
        }
    }

Android | Getting the result of an Activity

关于java - Android Studio Value 不会传递给其他 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42789076/

相关文章:

android - 为什么我不能回复 PlayStore 评论?

java - AlarmManager 服务始终每分钟运行一次

java - 使用 java 中的 ocpsoft 重写删除 .xhtml 扩展名

java - 旧正则表达式代码的必要解释

php - Android:无法从 mysql 数据库检索图像 url 并将其显示在 imageView 中

android - Android Studio 3.0 Canary 4 构建错误

java - 如何在 WhatsApp 上将图像和文本一起分享给特定收件人?

java - 如何使用 Struts 2 提供静态资源(图像、CSS 等)?

java - HQL检查对象是否包含请求集合的所有元素

Java 类加载器 : difference between defining loader & initiating loader?