Android 在活动被销毁后,如何“保存”变量中的值?
我是Java编程新手,需要你的帮助 我是一家公司的实习生,我需要在Android Studio上做一个盘点应用程序。 我实现了一个扫描仪ZXing,它可以工作,但我需要保存结果。我有不同的按钮,对于这些按钮,我需要保存扫描仪结果。例如:我单击按钮A,结果需要保存在变量A中。当我单击按钮B时,它需要保存在变量B中。之后,我想通过电子邮件发送此变量 我坚持在储蓄点 我有34项活动。其中一个被复制或拆分为put和FETCH 获取的代码:Android 在活动被销毁后,如何“保存”变量中的值?,android,android-activity,Android,Android Activity,我是Java编程新手,需要你的帮助 我是一家公司的实习生,我需要在Android Studio上做一个盘点应用程序。 我实现了一个扫描仪ZXing,它可以工作,但我需要保存结果。我有不同的按钮,对于这些按钮,我需要保存扫描仪结果。例如:我单击按钮A,结果需要保存在变量A中。当我单击按钮B时,它需要保存在变量B中。之后,我想通过电子邮件发送此变量 我坚持在储蓄点 我有34项活动。其中一个被复制或拆分为put和FETCH 获取的代码: package app.local.leipziger_mess
package app.local.leipziger_messe.lbrenn.cable;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;
public class AbgeholtActivity extends AppCompatActivity {
//setzt die für die Buttonzuordnung nötigen Strings
ZwischenSpeicher zs = new ZwischenSpeicher();
//Setzt die IDs für die einzelnen Checkboxen
CheckBox b1_ab;
CheckBox b2_ab;
CheckBox b3_ab;
CheckBox b4_ab;
CheckBox b5_ab;
CheckBox b6_ab;
public String test = "1";
@Override
protected void onCreate(Bundle savedInstanceState) {
//Superklasse wird festgelegt
super.onCreate(savedInstanceState);
//Es wird als Inhalt der Activity das angegebene Layout festgelegt
setContentView(R.layout.activity_abgeholt);
//Checkboxen werden definiert
b1_ab = (CheckBox)findViewById(R.id.b1_ab);
b2_ab = (CheckBox)findViewById(R.id.b2_ab);
b3_ab = (CheckBox)findViewById(R.id.b3_ab);
b4_ab = (CheckBox)findViewById(R.id.b4_ab);
b5_ab = (CheckBox)findViewById(R.id.b5_ab);
b6_ab = (CheckBox)findViewById(R.id.b6_ab);
//TEST NUR EIN TEST
//Buttons werden erstellt und einer ID zugewiesen
final SimpleScannerActivity test_scanner = new SimpleScannerActivity();
final Button button_abgeholt_pc = findViewById(R.id.abgeholt_pc);
button_abgeholt_pc.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Buttonid wird festgelegt und der Intent wird festgelegt
zs.button_ergebnis[0] = test;
Toast.makeText(getApplicationContext(),zs.button_ergebnis[0],Toast.LENGTH_LONG).show();
//ntent abgeholtpcIntent = new Intent(getApplicationContext(),SimpleScannerActivity.class);
//startActivity(abgeholtpcIntent);
}
});
final Button button_abgeholt_mo = findViewById(R.id.abgeholt_mo);
button_abgeholt_mo.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Buttonid wird festgelegt und der Intent wird festgelegt
zs.buttonid = "2";
Intent abgeholtpcIntent = new Intent(getApplicationContext(),SimpleScannerActivity.class);
startActivity(abgeholtpcIntent);
String ergebnis = test_scanner.ergebnis_test();
}
});
final Button button_abgeholt_dr = findViewById(R.id.abgeholt_dr);
button_abgeholt_dr.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Buttonid wird festgelegt und der Intent wird festgelegt
zs.buttonid = "3";
Intent abgeholtpcIntent = new Intent(getApplicationContext(),SimpleScannerActivity.class);
startActivity(abgeholtpcIntent);
}
});
final Button button_abgeholt_tel = findViewById(R.id.abgeholt_tel);
button_abgeholt_tel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Buttonid wird festgelegt und der Intent wird festgelegt
zs.buttonid = "4";
Intent abgeholtpcIntent = new Intent(getApplicationContext(),SimpleScannerActivity.class);
startActivity(abgeholtpcIntent);
}
});
}
public void checkbox_clicked(View v)
{
//Checkt ob die Checkbox angeklickt ist oder nicht (Text ist noch Platzhalter mäßig vorhanden)
if(b1_ab.isChecked())
{
Toast.makeText(getApplicationContext(), "Es wurde keine ID gefunden! Wechsel zur Main Activity1", Toast.LENGTH_LONG).show();
}
else if (b2_ab.isChecked())
{
Toast.makeText(getApplicationContext(), "Es wurde keine ID gefunden! Wechsel zur Main Activity2", Toast.LENGTH_LONG).show();
}else if (b3_ab.isChecked())
{
Toast.makeText(getApplicationContext(), "Es wurde keine ID gefunden! Wechsel zur Main Activity3", Toast.LENGTH_LONG).show();
}else if (b4_ab.isChecked())
{
Toast.makeText(getApplicationContext(), "Es wurde keine ID gefunden! Wechsel zur Main 4", Toast.LENGTH_LONG).show();
}else if (b5_ab.isChecked())
{
Toast.makeText(getApplicationContext(), "Es wurde keine ID gefunden! Wechsel zur Main Activity5", Toast.LENGTH_LONG).show();
}else if (b6_ab.isChecked()) {
Toast.makeText(getApplicationContext(), "Es wurde keine ID gefunden! Wechsel zur Main Activity6", Toast.LENGTH_LONG).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Setzt das Menu oben Rechts
getMenuInflater().inflate(R.menu.menu_hilfe, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_help) {
//Führt noch nichts aus -> wird dann das von der Main Activity ausführen!
return true;
}
return super.onOptionsItemSelected(item);
}
}
这是主要的活动:
package app.local.leipziger_messe.lbrenn.cable;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog;
public class MainActivity extends AppCompatActivity {
//Berechtigungscode für die Permissionsabfrage
private int CAMERA_PERMISSION_CODE = 1;
//Erstellung der Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
//Superklasse wird vergeben
super.onCreate(savedInstanceState);
//Es wird der Inhalt der Activity gesetzt
setContentView(R.layout.activity_main);
//Die Permissions werden abgefragt
pCheck();
//Buttons werden initialisiert und erstellt
final Button button_abgeholt = findViewById(R.id.button_abgeholt);
button_abgeholt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Beim klicken wird ein neuer Intent erstellt und man wird auf die AbgeholtActivity weitergeleitet
Intent abgeholttIntent = new Intent(getApplicationContext(),AbgeholtActivity.class);
startActivity(abgeholttIntent);
}
});
final Button button_hingestellt = findViewById(R.id.button_hingestellt);
button_hingestellt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Beim klicken wird ein neuer Intent erstellt und man wird auf die HingestelltActivity weitergeleitet
Intent hingestelltIntent = new Intent(getApplicationContext(),HingestelltActivity.class);
startActivity(hingestelltIntent);
}
});
final Button button_weiter = findViewById(R.id.button_weiter);
button_weiter.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Beim klicken wird ein neuer Intent erstellt und man wird auf die WeiterActivity weitergeleitet
Intent testIntent = new Intent(getApplicationContext(),SimpleScannerActivity.class);
startActivity(testIntent);
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//Checkt ob die ID von dem Menu das Hilfe Menu ist
if (id == R.id.action_help) {
//Führt den Debug aus
String debug_test[] = new String[8];
//Erstellt eine neue Instanz von der SimpleScannerActivity
ZwischenSpeicher debug_abfrage = new ZwischenSpeicher();
//Fragt die einzelnen IDs ab, die in der SimpleScannerActivity gesetzt wurden
debug_test[0] = debug_abfrage.button_ergebnis[0];
//Gibt die einzelnen Ergebnisse aus
Toast.makeText(this, debug_test[0], Toast.LENGTH_SHORT).show();
return true;
}
return super.onOptionsItemSelected(item);
}
//Checkt ob die Permissions in der Manifest Datei gesetzt wurden
private void requestCameraPermission() {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.CAMERA)) {
} else {
ActivityCompat.requestPermissions(this,
new String[] {Manifest.permission.CAMERA}, CAMERA_PERMISSION_CODE);
}
}
//Gibt das Ergebnis aus und zeigt ob die Berechtigung vom Nutzer erteilt wurde oder nicht
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == CAMERA_PERMISSION_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Berechtigung erteilt", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Berechtigung verweigert", Toast.LENGTH_SHORT).show();
}
}
}
//Führt den ganzen Check aus
public void pCheck() {
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Berechtigungen vollständig vergeben",Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Berechtigungen müssen noch vergeben werden!",Toast.LENGTH_LONG).show();
requestCameraPermission();
}
}
}
这是我在代码中测试的扫描仪:
package app.local.leipziger_messe.lbrenn.cable;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import java.io.*;
import app.local.leipziger_messe.lbrenn.cable.MainActivity;
import com.google.zxing.Result;
import java.io.FileWriter;
import me.dm7.barcodescanner.zxing.ZXingScannerView;
public class SimpleScannerActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
//Die nötigen Buttonids werden definiert
public final static String STATE_DATA = "ButtonIDs";
static final String LOG_TAG = "Test_test";
//Strings zur Nutzung der Buttonids werden festgelegt sowie die nötigen Scanner Elemente
public String abgeholt_pc_id;
public String abgeholt_mo_id;
public String abgeholt_dr_id;
public String abgeholt_tel_id;
public String hingestellt_pc_id;
public String hingestellt_mo_id;
public String hingestellt_dr_id;
public String hingestellt_tel_id;
private static final String TAG = "Code Results:";
private Result scanResult;
public ZXingScannerView mScannerView;
@Override
public void onCreate(Bundle state) {
//Superklasse wird festgelegt
super.onCreate(state);
//Scanner Ansicht wird initzialisiert
mScannerView = new ZXingScannerView(this); // Programmatically initialize the scanner view
//Der Scanner wird als Inhalt gesetzt
setContentView(mScannerView); // Set the scanner view as the content view
}
@Override
public void onResume() {
//legt die Superklasse fest
super.onResume();
ZwischenSpeicher zs = new ZwischenSpeicher();
mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
mScannerView.startCamera(); // Start camera on resume
Toast.makeText(this, zs.button_ergebnis[0],Toast.LENGTH_LONG).show();
}
@Override
public void onPause() {
//Legt die Superklasse fest
super.onPause();
mScannerView.stopCamera(); // Stop camera on pause
}
@Override
public void handleResult(Result rawResult) {
//führt die Kamerview weiter aus
mScannerView.resumeCameraPreview(this);
//Setzt das das scanResult das rawResult ist
scanResult=rawResult;
//führt die untere Funktion aus
//getrawresult_test();
Log.d("handler","");
AbgeholtActivity AA = new AbgeholtActivity();
ZwischenSpeicher zs = new ZwischenSpeicher();
Toast.makeText(this, zs.button_ergebnis[0],Toast.LENGTH_LONG).show();
}
public Result getrawresult_test() {
Log.d("getrawresult","Result");
AbgeholtActivity AA = new AbgeholtActivity();
ZwischenSpeicher zs = new ZwischenSpeicher();
//liest das Ergebnis aus dem handleResult aus
String result = scanResult.getText();
//
//
//
//
// //Checkt welcher Button gedrückt wurde und speichert das Ergebnis in die entsprechende Variable ein
//
// if (zs.buttonid == "1") {
// Log.d("buttonid1","Result");
// abgeholt_pc_id = result;
// zs.buttonID_array[0] = abgeholt_pc_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[0]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else if(zs.buttonid == "2") {
// Log.d("buttonid2","Result");
// abgeholt_mo_id = result;
// zs.buttonID_array[1] = abgeholt_mo_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[1]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else if(zs.buttonid == "3") {
// Log.d("buttonid3","Result");
// abgeholt_dr_id = result;
// zs.buttonID_array[2] = abgeholt_dr_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[2]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else if(zs.buttonid == "4") {
// Log.d("buttonid4","Result");
// abgeholt_tel_id = result;
// zs.buttonID_array[3] = abgeholt_tel_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[3]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else if(zs.buttonid == "5") {
// Log.d("buttonid5","Result");
// hingestellt_pc_id = result;
// zs.buttonID_array[4] = hingestellt_pc_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[4]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else if(zs.buttonid == "6") {
// Log.d("buttonid6","Result");
// zs.buttonID_array[5] = hingestellt_mo_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[5]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else if(zs.buttonid == "7") {
// Log.d("buttonid7","Result");
// hingestellt_dr_id = result;
// zs.buttonID_array[6] = hingestellt_dr_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[6]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else if(zs.buttonid == "8") {
// Log.d("buttonid8","Result");
// hingestellt_tel_id = result;
// zs.buttonID_array[7] = hingestellt_tel_id;
// Toast.makeText(getApplicationContext(), zs.buttonID_array[7]+" wurde gespeichert!", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// } else {
// Toast.makeText(getApplicationContext(), "Es wurde keine ID gefunden! Wechsel zur Main Activity", Toast.LENGTH_LONG).show();
// wechselzumainActivity();
// }
return scanResult;
}
public String ergebnis_test() {
String ergebnis = scanResult.getText();
return ergebnis;
}
//Es wird eine Intent erstellt, die zur MainActivity wechselt
public void wechselzumainActivity() {
Intent mainactivityIntent = new Intent(getApplicationContext(),MainActivity.class);
startActivity(mainactivityIntent);
}
}
让我解释一下最近我是如何在我的应用程序中实现条形码扫描仪的。我的要求是,我的用户如果想通过我的应用程序销售他们的书,将扫描他们书封底的条形码(如果有)。一旦扫描仪完成扫描,它将返回条形码中存储的ISBN号。现在,我必须将ISBN号发布到一个Web服务,该服务将以JSON的形式返回关于该书的完整数据。现在,我将解析JSON并用webservice返回的数据填充视图 现在,在您的情况下,您需要扫描条形码,该条形码将返回一个数字,可能是资产ID,您需要将该数字发布到数据库或我的理解。如果我遗漏了什么,请评论。现在只需按照以下步骤完成此操作: 添加依赖项: 首先在应用程序级别build.gradle文件中添加条形码依赖项。像这样:
implementation 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
implementation 'com.google.zxing:core:3.2.1'
SharedPreferences sharedPreferences;
public static final String mypreference = "mypref";
Button barcodeBtn = findViewById(R.id.barcodeBtn);
barcodeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
integrator.setPrompt("Scan the barcode on the asset");
integrator.setCameraId(0); // Use a specific camera of the device
integrator.setOrientationLocked(true);
integrator.setBeepEnabled(true);
integrator.setCaptureActivity(CaptureActivityPortrait.class);
integrator.initiateScan();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
final IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(result != null) {
if(result.getContents() == null) {
Log.d("MainActivity", "Cancelled scan");
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
Log.d("MainActivity", "Scanned");
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
// This is where you are saving the scanned asset ID in the shared preference file.
sharedpreferences = getActivity().getSharedPreferences("mypref", 0); // 0 - for private mode
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("assetID", result.getContents());
editor.apply();
}
} else {
// This is important, otherwise the result will not be passed to the fragment
super.onActivityResult(requestCode, resultCode, data);
}
}
我希望你已经这样做了
声明共享首选项文件:
现在声明共享首选项,并使用您选择的任何名称声明共享首选项文件。像这样:
implementation 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
implementation 'com.google.zxing:core:3.2.1'
SharedPreferences sharedPreferences;
public static final String mypreference = "mypref";
Button barcodeBtn = findViewById(R.id.barcodeBtn);
barcodeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
integrator.setPrompt("Scan the barcode on the asset");
integrator.setCameraId(0); // Use a specific camera of the device
integrator.setOrientationLocked(true);
integrator.setBeepEnabled(true);
integrator.setCaptureActivity(CaptureActivityPortrait.class);
integrator.initiateScan();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
final IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(result != null) {
if(result.getContents() == null) {
Log.d("MainActivity", "Cancelled scan");
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
Log.d("MainActivity", "Scanned");
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
// This is where you are saving the scanned asset ID in the shared preference file.
sharedpreferences = getActivity().getSharedPreferences("mypref", 0); // 0 - for private mode
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("assetID", result.getContents());
editor.apply();
}
} else {
// This is important, otherwise the result will not be passed to the fragment
super.onActivityResult(requestCode, resultCode, data);
}
}
这应该在onCreate方法之前在主类中完成
添加按钮以启动条形码扫描仪:
现在,在想要启动条形码扫描仪的所需活动处添加一个按钮。请记住,条形码的结果将返回到此活动。像这样:
implementation 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
implementation 'com.google.zxing:core:3.2.1'
SharedPreferences sharedPreferences;
public static final String mypreference = "mypref";
Button barcodeBtn = findViewById(R.id.barcodeBtn);
barcodeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
integrator.setPrompt("Scan the barcode on the asset");
integrator.setCameraId(0); // Use a specific camera of the device
integrator.setOrientationLocked(true);
integrator.setBeepEnabled(true);
integrator.setCaptureActivity(CaptureActivityPortrait.class);
integrator.initiateScan();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
final IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(result != null) {
if(result.getContents() == null) {
Log.d("MainActivity", "Cancelled scan");
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
Log.d("MainActivity", "Scanned");
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
// This is where you are saving the scanned asset ID in the shared preference file.
sharedpreferences = getActivity().getSharedPreferences("mypref", 0); // 0 - for private mode
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("assetID", result.getContents());
editor.apply();
}
} else {
// This is important, otherwise the result will not be passed to the fragment
super.onActivityResult(requestCode, resultCode, data);
}
}
检索扫描的资产ID并存储在共享首选项中:
点击扫描仪按钮后,可以看到条形码扫描仪已打开,可以扫描条形码。扫描结束后,扫描仪会将扫描的资产ID返回给主机活动。现在,您必须捕获资产ID并将其存储在共享首选项文件中。像这样:
implementation 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
implementation 'com.google.zxing:core:3.2.1'
SharedPreferences sharedPreferences;
public static final String mypreference = "mypref";
Button barcodeBtn = findViewById(R.id.barcodeBtn);
barcodeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
integrator.setPrompt("Scan the barcode on the asset");
integrator.setCameraId(0); // Use a specific camera of the device
integrator.setOrientationLocked(true);
integrator.setBeepEnabled(true);
integrator.setCaptureActivity(CaptureActivityPortrait.class);
integrator.initiateScan();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
final IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(result != null) {
if(result.getContents() == null) {
Log.d("MainActivity", "Cancelled scan");
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
Log.d("MainActivity", "Scanned");
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
// This is where you are saving the scanned asset ID in the shared preference file.
sharedpreferences = getActivity().getSharedPreferences("mypref", 0); // 0 - for private mode
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("assetID", result.getContents());
editor.apply();
}
} else {
// This is important, otherwise the result will not be passed to the fragment
super.onActivityResult(requestCode, resultCode, data);
}
}
使用存储在共享首选项中的值:
现在,您已经从条形码扫描仪接收到资产ID,并将其存储在一个共享首选项文件中,该文件的变量名为assetID。请记住,此值适用于应用程序中的所有活动。您可以从以下位置检索存储在assetID中的值:
sharedpreferences = getActivity().getSharedPreferences("mypref", 0); // 0 - for private mode
String assetID= sharedpreferences.getString(assetID, "0");
下次打开条形码扫描仪并扫描另一个条形码时,存储在assetID中的值将被新的资产ID覆盖
希望这有帮助:您面临的确切问题是什么?你的应用程序崩溃了吗?如果是这样,请在此处添加logcat跟踪。使用singleton类和/或将您的值保存在共享中preferences@KarthicSrinivasan不,我的应用程序不会崩溃。我没有从我的扫描器获取到我的主活动的值。例如我想从电脑上扫描条形码。所以我打开应用程序,然后单击“放置”和“电脑盘点”,然后扫描仪打开。我扫描代码,但当我返回到另一个活动时,变量的值为null。我希望你能理解。顺便说一句,我的英语很抱歉。@SinanCeylan我可以试试这个:我已经添加了一个答案。请检查:我有自己的方法,但谢谢你:。谢谢你的回答