java - 从位于另一个类中的一个类访问变量

标签 java android oop android-studio error-handling

我被困在我的android应用程序中的此错误大约3周了。它杀死了我... :(。有人可以为我修复代码(这是一个小错误),然后我可以从中学习。基本上,我有MainActivity类,其中包含变量“dblCountValue”。我想访问Withdraw类中的变量,这是我的代码:

类:MainActivity

package com.mycash.borgjake.mycash;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.widget.Button;
import android.widget.TextView;

import android.view.View;

import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.InterstitialAd;

import static com.mycash.borgjake.mycash.R.styleable.View;

public class MainActivity extends AppCompatActivity {

private InterstitialAd mInterstitial;


Button btnClick;
Button btnWithdraw;

TextView txtBalance;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    AdView adView = (AdView)findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder()
            .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
            .build();
    adView.loadAd(adRequest);

    btnClick = (Button) findViewById(R.id.button);

    txtBalance = (TextView) findViewById(R.id.textView);

    btnClick.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v){
                String countValue = txtBalance.getText().toString();
                int dblCountValue = Integer.parseInt(countValue);

                if (mInterstitial.isLoaded()) {
                    mInterstitial.show();
                }

                //mInterstitial.loadAd(request);

                dblCountValue++;
                txtBalance.setText(String.valueOf(dblCountValue));

        }
    });

    mInterstitial = new InterstitialAd(this);
    mInterstitial.setAdUnitId("...");
    AdRequest request = new AdRequest.Builder()
            .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
            .build();
    mInterstitial.loadAd(request);

}

public void onButtonClick(View v) {
    if(v.getId() == R.id.button2) {
        Intent i = new Intent(MainActivity.this, Withdraw.class);
        startActivity(i);
    }
  }
}

类:退出
package com.mycash.borgjake.mycash;

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.View;

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

public class Withdraw extends Activity {

MainActivity mainActivityObject = new MainActivity();

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

    AdView adView = (AdView) findViewById(R.id.adView2);
    AdRequest adRequest = new AdRequest.Builder()
            .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
            .build();
    adView.loadAd(adRequest);
}

public void showAlert(View view) {
    AlertDialog.Builder myAlert = new AlertDialog.Builder(this);

    String messageWithdraw;
    String aWithdraw;
    String dWithdraw;
    aWithdraw = "Congradulations! Your payment is being processed";
    dWithdraw = "Sorry! Please try again when you reach 100 points ($10)";



    dblCountValue = mainActivityObject.dblCountValue;      // <-- Error

    if (dblCountValue > 100) {                           // <-- Error
        myAlert.setMessage(aWithdraw)                   
                .create();                             
        myAlert.show();                               
    } else {                                         
        myAlert.setMessage(dWithdraw)               
                .create();                         
        myAlert.show();                           
    }                                            

  }
}

在此先感谢:)

最佳答案

要将变量从一个 Activity 发送到另一个 Activity ,应使用Intent对象。在这种情况下,您必须创建一个
MainActivity中的Intent对象,可以使用该Intent对象将数据发送到Withdraw类。

您应该在MainActivity中编写此代码。

public void onClick(View v){
                String countValue = txtBalance.getText().toString();
                int dblCountValue = Integer.parseInt(countValue);

                if (mInterstitial.isLoaded()) {
                    mInterstitial.show();
                }

                //mInterstitial.loadAd(request);

                dblCountValue++;
                txtBalance.setText(String.valueOf(dblCountValue));

        Intent intent = new Intent(MainActivity.this, Withdraw.class);
        intent.putExtra( "key" , dblCountValue);
               startActivity(intent);

        }
    });

现在这部分代码发生在onCreate方法旁边的Withdraw类中,这里我们将使用key从Intet对象中提取dblCountValue。

在Withdraw类中替换dblCountValue = mainActivityObject.dblCountValue;
与以下代码段
Bundle bundle = getIntent().getExtras();
int dblCountValue =Bundle.getInt("key",0);

关于java - 从位于另一个类中的一个类访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40490314/

相关文章:

java - 使带下划线的文本拉伸(stretch) 100%

java - 使用依赖的一小部分有意义吗?

Android 在线性布局上的大小相等

android挂载卸载sd卡

c#类型参数: How to Parse?

javascript - 在函数内部调用原型(prototype)方法不起作用

java - 我什么时候应该在类里面使用 "this"?

java - 如何从 servlet 设置或访问 Tomcat 中的 JspCompilationContext?

java - 确定某个单词是否是 Apache Derby 中的保留字

android - 使用 Retrofit 从 RetrofitError 对象获取 JSON