Java 将变量传递给类

Java 将变量传递给类,java,android,variables,Java,Android,Variables,我不知道如何将结果从onActivityResult传递到resultBreakdown。我知道有一个get/set,我看过一些教程,但我就是不明白。或者,有更好的方法吗?如果我注释掉resultBreakdown类*/resultBreakdown,程序运行正常 附带说明,我刚开始使用java/android。我比阅读更善于学习。我知道我的代码有点笨拙。谢谢你的帮助 注意:我编辑代码以反映建议的更改 package com.example.spdwiz18.testproject; impo

我不知道如何将结果从onActivityResult传递到resultBreakdown。我知道有一个get/set,我看过一些教程,但我就是不明白。或者,有更好的方法吗?如果我注释掉resultBreakdown类*/resultBreakdown,程序运行正常

附带说明,我刚开始使用java/android。我比阅读更善于学习。我知道我的代码有点笨拙。谢谢你的帮助

注意:我编辑代码以反映建议的更改

package com.example.spdwiz18.testproject;

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.EditText;
import android.widget.TextView;
import android.view.View.OnClickListener;

import com.google.android.gms.common.api.CommonStatusCodes;
import com.google.android.gms.vision.barcode.Barcode;

import java.text.DateFormat;
import java.time.*;
import java.time.temporal.*;
import java.time.LocalDate;
import java.util.Calendar;
import java.util.Date;


public class GrindLogActivity extends AppCompatActivity {
TextView barcodeResult;




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

    // this is how to set id's from the xml file with vNames. (julianDate)
    TextView bcc = (Textview)findViewById(R.id.bccheck);
    TextView pc = (Textview)findViewById(R.id.pcode);
    TextView pd = (Textview)findViewById(R.id.pdate);
    // TextView en = (Textview)findViewById(R.id.estnum);
    TextView sn = (Textview)findViewById(R.id.seqnum);
    TextView nw = (Textview)findViewById(R.id.nweight);
    barcodeResult = (TextView) findViewById(R.id.barcode_result);
    TextView julianDate = (TextView) findViewById(R.id.datecode);
    TextView td1 = (TextView) findViewById(R.id.todaydate1);


    // this is how you get a julian/original date for android
        LocalDate now = LocalDate.now();
        int julian = now.get(ChronoField.DAY_OF_YEAR);
    // this how to set you current date for android
        Date date = new Date();
        String stringDate = DateFormat.getDateInstance().format(date);
    // this is how to set your vNames to your method variables
        julianDate.setText(Integer.toString(julian));
        td1.setText(stringDate);

}

/*add click event to the scan barcode button */
public void scanBarcode(View v) {
    Intent intent = new Intent(this, ScanBarcodeActivity.class);
    startActivityForResult(intent, 0);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 0) {
        if (requestCode == CommonStatusCodes.SUCCESS) {
            if (data != null) {
                Barcode barcode = data.getParcelableExtra("barcode");
                barcodeResult.setText("Barcode value : " + barcode.displayValue);
            } else {
                barcodeResult.setText("No Barcode Found");
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
}
public void resultsBreakdown(String result) {
if (result.length() == 44) {
    pc.setText(result.CharSequence(2,10));
    pd.setText(result.CharSequence(13,18));
    sn.setText(result.CharSequence(21,27));
    nw.setText(result.CharSequence(13,18));
} else {
    bcc.setText("invalid barcode");
}

}resultBreakdown既不是类也不是方法。İt甚至不是编译。您将resultBreakDown更改为方法:

public void resultsBreakdown(Barcode barcodeResult){
    if (barcodeResult.length == (44)) {
        pc = (barcodeResult.CharSequence(2,10);
        pd = (barcodeResult.CharSequence(13,18);
        sn = (barcodeResult.CharSequence(21,27);
        nw = (barcodeResult.CharSequence(13,18);
}       else{
                bcc = "invalid barcode";
    }

稍后在onActivityResult中,使用条形码参数调用您的方法。

resultBreakdown既没有类也没有方法。İt甚至没有编译。您将resultBreakDown更改为方法:

public void resultsBreakdown(Barcode barcodeResult){
    if (barcodeResult.length == (44)) {
        pc = (barcodeResult.CharSequence(2,10);
        pd = (barcodeResult.CharSequence(13,18);
        sn = (barcodeResult.CharSequence(21,27);
        nw = (barcodeResult.CharSequence(13,18);
}       else{
                bcc = "invalid barcode";
    }
稍后在onActivityResult中,使用条形码参数调用您的方法

代码不完整,因为您没有放置
ScanBarcodeActivity
java文件。好。。。我在我的项目中放置了一个小代码,它将明确您的概念,甚至您可以使用它


这里假设我在活动
MyClassA.java
中,其中有一个按钮,单击它将启动另一个活动
MyClassB.java
,请记住,它将与布局一起启动该活动。。从该活动中,您必须在特定事件上完成它,当它完成时,您的
MyClassA.java
将收集其结果


从Activity
MyClassA.java
中,单击按钮“我想开始一项活动”
MyClassB.java
对于结果:

ContactsBtn.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            ContactsBtn.setEnabled(false);
            Intent intent = new Intent(MyClassA.this, MyClassB.class);
            startActivityForResult(intent, REQUEST_CODE);

        }
    });
其中,
REQUEST\u code
应在
MyClassA
类中声明为public
static final int REQUEST\u code=1


现在,从活动
MyClassB.java
开始,在特定事件上,单击一个按钮即可关闭此活动,并将结果发送到上一个活动:

SelectContactsButton.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Intent intent = new Intent();
            intent.putStringArrayListExtra("WhitelistNames", (ArrayList<String>) WhitelistNames);

            setResult(Activity.RESULT_OK, intent);
            finish();
          }
    });
请记住,
onActivityResult
方法应该是
MyClassA.java
类的一部分,并且不应该在
onCreate
中,也不应该在该类的其他现有标准方法中

希望能有帮助

代码不完整,因为您没有放置
ScanBarcodeActivity
java文件。好。。。我在我的项目中放置了一个小代码,它将明确您的概念,甚至您可以使用它


这里假设我在活动
MyClassA.java
中,其中有一个按钮,单击它将启动另一个活动
MyClassB.java
,请记住,它将与布局一起启动该活动。。从该活动中,您必须在特定事件上完成它,当它完成时,您的
MyClassA.java
将收集其结果


从Activity
MyClassA.java
中,单击按钮“我想开始一项活动”
MyClassB.java
对于结果:

ContactsBtn.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            ContactsBtn.setEnabled(false);
            Intent intent = new Intent(MyClassA.this, MyClassB.class);
            startActivityForResult(intent, REQUEST_CODE);

        }
    });
其中,
REQUEST\u code
应在
MyClassA
类中声明为public
static final int REQUEST\u code=1


现在,从活动
MyClassB.java
开始,在特定事件上,单击一个按钮即可关闭此活动,并将结果发送到上一个活动:

SelectContactsButton.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Intent intent = new Intent();
            intent.putStringArrayListExtra("WhitelistNames", (ArrayList<String>) WhitelistNames);

            setResult(Activity.RESULT_OK, intent);
            finish();
          }
    });
请记住,
onActivityResult
方法应该是
MyClassA.java
类的一部分,并且不应该在
onCreate
中,也不应该在该类的其他现有标准方法中

希望能有帮助


我认为在
requestCode==CommonStatusCodes.SUCCESS中应该有
resultCode
而不是
requestCode

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 0) {
        if (resultCode == Activity.RESULT_OK) {
            if (data != null) {
                Barcode barcode = data.getParcelableExtra("barcode");
                barcodeResult.setText("Barcode value : " + barcode.displayValue);
                resultsBreakdown(barcode.displayValue)
            } else {
                barcodeResult.setText("No Barcode Found");
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
}
public void resultsBreakdown(String barcodeData){
    if (barcodeData.length == (44)) {
        pc = (barcodeData.CharSequence(2,10);
        pd = (barcodeData.CharSequence(13,18);
        sn = (barcodeData.CharSequence(21,27);
        nw = (barcodeData.CharSequence(13,18);
    )else(
        bcc = "invalid barcode";
    }
)               
}

我认为在
requestCode==CommonStatusCodes.SUCCESS中应该有
resultCode
而不是
requestCode

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 0) {
        if (resultCode == Activity.RESULT_OK) {
            if (data != null) {
                Barcode barcode = data.getParcelableExtra("barcode");
                barcodeResult.setText("Barcode value : " + barcode.displayValue);
                resultsBreakdown(barcode.displayValue)
            } else {
                barcodeResult.setText("No Barcode Found");
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
}
public void resultsBreakdown(String barcodeData){
    if (barcodeData.length == (44)) {
        pc = (barcodeData.CharSequence(2,10);
        pd = (barcodeData.CharSequence(13,18);
        sn = (barcodeData.CharSequence(21,27);
        nw = (barcodeData.CharSequence(13,18);
    )else(
        bcc = "invalid barcode";
    }
)               
}

发布的代码需要大量的工作,所以这个答案很可能只是部分的

(1) TextView初始化在错误的位置

声明为类实例变量的
TextView
s此时也无法初始化。因此,将声明放在那里(其中声明了bardcodeResult):

但是,以相同的方式将初始化移动到
onCreate
方法
barcodeResult

// in onCreate
barcodeResult = (TextView) findViewById(R.id.barcode_result);
bcc = (TextView)findViewById(R.id.bccheck);
pc = (TextView)findViewById(R.id.pcode);
pd = (TextView)findViewById(R.id.pdate);
sn = (TextView)findViewById(R.id.seqnum);
nw = (TextView)findViewById(R.id.nweight);
(2) 语法为
resultsBreakdown
无效,功能错误(需要调用
setText
)-请尝试:

(3) 实际调用
resultsBreakdown
方法:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 0) {
        if (requestCode == CommonStatusCodes.SUCCESS) {
            if (data != null) {
                Barcode barcode = data.getParcelableExtra("barcode");
                barcodeResult.setText("Barcode value : " +                  barcode.displayValue);

                //-- THIS LINE WAS ADDED TO CALL METHOD
                resultsBreakdown(barcode.displayValue.toString());
           } else {
               barcodeResult.setText("No Barcode Found");
           }
           super.onActivityResult(requestCode, resultCode, data);
        }
   }
}

发布的代码需要大量的工作,所以这个答案很可能只是部分的

(1) TextView初始化在错误的位置

声明为类实例变量的
TextView
s此时也无法初始化。因此,将声明放在那里(其中声明了bardcodeResult):

但是,以相同的方式将初始化移动到
onCreate
方法
barcodeResult

// in onCreate
barcodeResult = (TextView) findViewById(R.id.barcode_result);
bcc = (TextView)findViewById(R.id.bccheck);
pc = (TextView)findViewById(R.id.pcode);
pd = (TextView)findViewById(R.id.pdate);
sn = (TextView)findViewById(R.id.seqnum);
nw = (TextView)findViewById(R.id.nweight);
(2) 语法为
resultsBreakdown
无效,功能错误(需要调用
setText
)-请尝试:

(3) 实际调用
resultsBreakdown
方法:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 0) {
        if (requestCode == CommonStatusCodes.SUCCESS) {
            if (data != null) {
                Barcode barcode = data.getParcelableExtra("barcode");
                barcodeResult.setText("Barcode value : " +                  barcode.displayValue);

                //-- THIS LINE WAS ADDED TO CALL METHOD
                resultsBreakdown(barcode.displayValue.toString());
           } else {
               barcodeResult.setText("No Barcode Found");
           }
           super.onActivityResult(requestCode, resultCode, data);
        }
   }
}

谢谢大家的帮助。这个按需要工作

package com.example.spdwiz18.testproject;

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.EditText;
import android.widget.TextView;
import android.view.View.OnClickListener;

import com.google.android.gms.common.api.CommonStatusCodes;
import com.google.android.gms.vision.barcode.Barcode;

import java.text.DateFormat;
import java.time.*;
import java.time.temporal.*;
import java.time.LocalDate;
import java.util.Calendar;
import java.util.Date;


public class GrindLogActivity extends AppCompatActivity {
TextView barcodeResult;
TextView bcc;
TextView pc;
TextView pd;
TextView sn;
TextView nw;


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


    bcc = (TextView)findViewById(R.id.bccheck);
    pc = (TextView)findViewById(R.id.pcode);
    pd = (TextView)findViewById(R.id.pDate);
    // TextView en = (TextView)findViewById(R.id.estnum);
    sn = (TextView)findViewById(R.id.seqnum);
    nw = (TextView)findViewById(R.id.nweight);
    barcodeResult = (TextView) findViewById(R.id.barcode_result);
    TextView julianDate = (TextView) findViewById(R.id.datecode);
    TextView td1 = (TextView) findViewById(R.id.todaydate1);

    // this is how to set id's from the xml file with vNames. (julianDate)

    // this is how you get a julian/original date for android
        LocalDate now = LocalDate.now();
        int julian = now.get(ChronoField.DAY_OF_YEAR);
    // this how to set you current date for android
        Date date = new Date();
        String stringDate = DateFormat.getDateInstance().format(date);
    // this is how to set your vNames to your method variables
        julianDate.setText(Integer.toString(julian));
        td1.setText(stringDate);

}

/*add click event to the scan barcode button */
public void scanBarcode(View v) {
    Intent intent = new Intent(this, ScanBarcodeActivity.class);
    startActivityForResult(intent, 0);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 0) {
        if (requestCode == CommonStatusCodes.SUCCESS) {
            if (data != null) {
                Barcode barcode = data.getParcelableExtra("barcode");
                barcodeResult.setText("Barcode value : " + barcode.displayValue);
                resultsBreakdown(barcode.displayValue.toString());
            } else {
                barcodeResult.setText("No Barcode Found");
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
}
public void resultsBreakdown(CharSequence result) {
    if (result.length() == 44) {
        pc.setText(result.subSequence(2,10));
        pd.setText(result.subSequence(13,18));
        sn.setText(result.subSequence(21,27));
        nw.setText(result.subSequence(13,18));
    } else {
        bcc.setText("invalid barcode");
    }

}}谢谢大家的帮助。这个按需要工作

package com.example.spdwiz18.testproject;

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.EditText;
import android.widget.TextView;
import android.view.View.OnClickListener;

import com.google.android.gms.common.api.CommonStatusCodes;
import com.google.android.gms.vision.barcode.Barcode;

import java.text.DateFormat;
import java.time.*;
import java.time.temporal.*;
import java.time.LocalDate;
import java.util.Calendar;
import java.util.Date;


public class GrindLogActivity extends AppCompatActivity {
TextView barcodeResult;
TextView bcc;
TextView pc;
TextView pd;
TextView sn;
TextView nw;


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


    bcc = (TextView)findViewById(R.id.bccheck);
    pc = (TextView)findViewById(R.id.pcode);
    pd = (TextView)findViewById(R.id.pDate);
    // TextView en = (TextView)findViewById(R.id.estnum);
    sn = (TextView)findViewById(R.id.seqnum);
    nw = (TextView)findViewById(R.id.nweight);
    barcodeResult = (TextView) findViewById(R.id.barcode_result);
    TextView julianDate = (TextView) findViewById(R.id.datecode);
    TextView td1 = (TextView) findViewById(R.id.todaydate1);

    // this is how to set id's from the xml file with vNames. (julianDate)

    // this is how you get a julian/original date for android
        LocalDate now = LocalDate.now();
        int julian = now.get(ChronoField.DAY_OF_YEAR);
    // this how to set you current date for android
        Date date = new Date();
        String stringDate = DateFormat.getDateInstance().format(date);
    // this is how to set your vNames to your method variables
        julianDate.setText(Integer.toString(julian));
        td1.setText(stringDate);

}

/*add click event to the scan barcode button */
public void scanBarcode(View v) {
    Intent intent = new Intent(this, ScanBarcodeActivity.class);
    startActivityForResult(intent, 0);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 0) {
        if (requestCode == CommonStatusCodes.SUCCESS) {
            if (data != null) {
                Barcode barcode = data.getParcelableExtra("barcode");
                barcodeResult.setText("Barcode value : " + barcode.displayValue);
                resultsBreakdown(barcode.displayValue.toString());
            } else {
                barcodeResult.setText("No Barcode Found");
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
}
public void resultsBreakdown(CharSequence result) {
    if (result.length() == 44) {
        pc.setText(result.subSequence(2,10));
        pd.setText(result.subSequence(13,18));
        sn.setText(result.subSequence(21,27));
        nw.setText(result.subSequence(13,18));
    } else {
        bcc.setText("invalid barcode");
    }

}}

我不太明白你的问题<代码>结果细分
是一种方法,而不是代码中的类。你能解释一下你的问题吗?我想在
requestCode==commonstatuscode中应该有
resultCode
而不是
requestCode
。SUCCESS
并没有完全理解你的问题<代码>结果细分
是一种方法,而不是代码中的类。你能解释一下你的问题吗?我想在
requestCode==commonstatuscode中应该有
resultCode
而不是
requestCode
。SUCCESS
(1)移动了它,没有意识到我把它放错地方了。我对自己的个人评论应该告诉我..我是根据你的建议编辑代码的,请告诉我,因为我没有这方面的正式教育。我自己学习。我明白了