Java 将变量传递给类
我不知道如何将结果从onActivityResult传递到resultBreakdown。我知道有一个get/set,我看过一些教程,但我就是不明白。或者,有更好的方法吗?如果我注释掉resultBreakdown类*/resultBreakdown,程序运行正常 附带说明,我刚开始使用java/android。我比阅读更善于学习。我知道我的代码有点笨拙。谢谢你的帮助 注意:我编辑代码以反映建议的更改Java 将变量传递给类,java,android,variables,Java,Android,Variables,我不知道如何将结果从onActivityResult传递到resultBreakdown。我知道有一个get/set,我看过一些教程,但我就是不明白。或者,有更好的方法吗?如果我注释掉resultBreakdown类*/resultBreakdown,程序运行正常 附带说明,我刚开始使用java/android。我比阅读更善于学习。我知道我的代码有点笨拙。谢谢你的帮助 注意:我编辑代码以反映建议的更改 package com.example.spdwiz18.testproject; impo
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
类中声明为publicstatic 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
将收集其结果
从ActivityMyClassA.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
类中声明为publicstatic 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)移动了它,没有意识到我把它放错地方了。我对自己的个人评论应该告诉我..我是根据你的建议编辑代码的,请告诉我,因为我没有这方面的正式教育。我自己学习。我明白了