Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从位于另一个类中的一个类访问变量_Java_Android_Oop_Android Studio_Error Handling - Fatal编程技术网

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

Java 从位于另一个类中的一个类访问变量,java,android,oop,android-studio,error-handling,Java,Android,Oop,Android Studio,Error Handling,我已经在android应用程序中被这个错误困扰了大约3周了。我快死了…:(.有人能帮我修复代码吗(这是一个小错误),然后我就可以从中学习。基本上,我有一个MainActivity类,它包含一个变量“dblCountValue”。我想访问Draw类中的变量。这是我的代码: 类别:主要活动 package com.mycash.borgjake.mycash; import android.content.Intent; import android.support.v7.app.AppCompa

我已经在android应用程序中被这个错误困扰了大约3周了。我快死了…:(.有人能帮我修复代码吗(这是一个小错误),然后我就可以从中学习。基本上,我有一个MainActivity类,它包含一个变量“dblCountValue”。我想访问Draw类中的变量。这是我的代码:

类别:主要活动

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();                           
    }                                            

  }
}
package com.mycash.borgjake.mycash;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.os.Bundle;
导入android.view.view;
导入com.google.android.gms.ads.AdRequest;
导入com.google.android.gms.ads.AdView;
公共课堂活动{
MainActivity mainActivityObject=新的MainActivity();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.draw);
AdView AdView=(AdView)findViewById(R.id.adView2);
AdRequest AdRequest=新建AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE\u ID\u仿真器)
.build();
adView.loadAd(adRequest);
}
公共无效显示警报(视图){
AlertDialog.Builder myAlert=新建AlertDialog.Builder(此);
字符串消息提取;
线描;
字符串dWithdraw;
aWithdraw=“恭喜!您的付款正在处理中”;
dWithdraw=“对不起!请在达到100分(10美元)时再试一次”;

dblCountValue=mainActivityObject.dblCountValue;//100){//只需在下面的位置声明dblCountValue

公共类MainActivity扩展了AppCompatActivity{

私人间质

按钮b单击; 按钮btnWithdraw

TextView txtBalance

public int dblCountValue;

@凌驾
protectedvoid onCreate(

首先将变量dblCountValue声明为全局变量,然后
1.通过intent传递此变量。
2.如果变量在许多活动中有大量使用,那么最好将其保存在SharedReference中并从中获取数据。离开应用程序时,不要忘记清除SharedReference。

3.使用变量dblCountValue及其getter和setter创建一个singleton类。因此,在MainActivity中设置其值,并在ExtractActivity中检索。
4.将其作为静态变量保存并通过类访问。
好主意是通过intent传递变量或使用SharedReference。

将变量从一个活动发送到另一个活动你应该使用意图对象。在你的情况下,你必须创建一个 MainActivity中的Intent对象,使用该Intent对象可以将数据发送到类

您应该在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方法中的Draw类中

在Draw类中,replace
dblCountValue=mainActivityObject.dblCountValue;

使用下面的代码部分

Bundle bundle = getIntent().getExtras();
int dblCountValue =Bundle.getInt("key",0);

这是一个局部字段。无法访问该字段。除此之外,这是完全错误的
dblCountValue=mainActivityObject.dblCountValue;
。您的dblCountValue整数在OnClick方法中的局部范围内。您不能在该方法之外访问它。如果您想使用mainActivity对象访问它,请声明变量as类变量。愿上帝宽恕你的罪行。看看:那么我如何从Draw类中获得dblCountValue呢?开始学习Java。