Android 如何使用“startActivityForResult”启动不同的活动?
如何使用Android 如何使用“startActivityForResult”启动不同的活动?,android,android-intent,Android,Android Intent,如何使用startActivityForResult从活动启动多个活动 Public class MainActivity extends Activity{ TextView hasilscan1; Button btnInputPerangkat, btnEditPerangkat; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(save
startActivityForResult
从活动启动多个活动
Public class MainActivity extends Activity{
TextView hasilscan1;
Button btnInputPerangkat, btnEditPerangkat;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hasilscan1 = (TextView) findViewById(R.id.hasilscan1);
btnInputPerangkat = (Button) findViewById(R.id.btnInputPerangkat);
btnEditPerangkat = (Button) findViewById(R.id.btnEditPerangkat);
btnInputPerangkat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
hasilscan1.setVisibility(TextView.INVISIBLE);
IntentIntegrator scanIntegrator = new IntentIntegrator(MainActivity.this);
scanIntegrator.initiateScan();
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (scanningResult != null) {
String scanContent = scanningResult.getContents();
hasilscan1.setText(scanContent);
Intent intent = new Intent(this, InputPerangkat.class);
intent.putExtra("hasilscan1", hasilscan1.getText().toString());
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), "Not found", Toast.LENGTH_SHORT).show();
btnInputPerangkat.setVisibility(EditText.INVISIBLE);
}
}
}
在我的情况下,我有2个按钮在1布局,当按钮点击,它将扫描条码和结果扫描将显示在另一个布局。我尝试了1个按钮并成功了,但我不知道如何实现2个按钮。您需要为每个startActivityForResult(意图,请求\u代码)设置不同的请求代码
并在您的onActivityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == IntentIntegrator.REQUEST_CODE && resultCode = RESULT_OK) {
IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (scanningResult != null) {
String scanContent = scanningResult.getContents();
hasilscan1.setText(scanContent);
Intent intent = new Intent(this, InputPerangkat.class);
intent.putExtra("hasilscan1", hasilscan1.getText().toString());
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), "Not found", Toast.LENGTH_SHORT).show();
btnInputPerangkat.setVisibility(EditText.INVISIBLE);
}
}
}
你可以很容易地做到。使用startActivityForResult
是为了满足特定的需要,例如,您有一个活动
第一个活动
。它需要获取一个仅在SecondActivity
和ThirdActivity
上可用的值才能检索此值
然后您必须定义两个请求代码(一个用于启动每个活动)。
例如:
例如,单击按钮
Intent intentGetMessage = new Intent(this, OtherActivity.class);
startActivityForResult(intentGetMessage, 25);
在其他活动中
Intent intent = new Intent();
intent.putExtra("check_list", 1);
intent.putExtra("shared_contact", stList);
setResult(25, intent);
finish();
此代码在隐私活动中正确使用
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 25) {
if (data != null) {
}
}
从数据中获取结果(代表OP发布)
以下是解决方案:
startActivityForResult(scanIntegrator.createScanIntent(), REQUEST_CODE);
public class MainActivity extends Activity{
TextView hasilscan1, hasilscan2;
Button btnInputPerangkat, btnEditPerangkat;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hasilscan1 = (TextView) findViewById(R.id.hasilscan1);
btnInputPerangkat = (Button) findViewById(R.id.btnInputPerangkat);
btnEditPerangkat = (Button) findViewById(R.id.btnEditPerangkat);
btnInputPerangkat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
hasilscan1.setVisibility(TextView.INVISIBLE);
IntentIntegrator scanIntegrator = new IntentIntegrator(MainActivity.this);
startActivityForResult(scanIntegrator.createScanIntent(), 10);
}
});
btnEditPerangkat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
hasilscan1.setVisibility(TextView.INVISIBLE);
IntentIntegrator scanIntegrator = new IntentIntegrator(MainActivity.this);
startActivityForResult(scanIntegrator.createScanIntent(), 20);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode==10) {
if (resultCode == RESULT_OK) {
String scanContent = intent.getStringExtra("SCAN_RESULT");
hasilscan1.setText(scanContent);
Intent intent1 = new Intent(this, InputPerangkat.class);
intent1.putExtra("hasilscan1", hasilscan1.getText().toString());
startActivity(intent1);
} else if(resultCode==RESULT_CANCELED){
Toast.makeText(getApplicationContext(), "Not found", Toast.LENGTH_SHORT).show();
}
}
if (requestCode==20) {
if (resultCode == RESULT_OK) {
String scanContent = intent.getStringExtra("SCAN_RESULT");
hasilscan1.setText(scanContent);
Intent intent2 = new Intent(this, EditPerangkat.class);
intent2.putExtra("hasilscan1", hasilscan1.getText().toString());
startActivity(intent2);
} else if(resultCode==RESULT_CANCELED){
Toast.makeText(getApplicationContext(), "Not found", Toast.LENGTH_SHORT).show();
}
}
}
still error,来自logcat的通知:error:二进制运算符的操作数类型错误&&&“第一种类型:布尔第二种类型:intstill error,来自logcat的通知:error:二进制运算符的操作数类型错误&&&“第一种类型:布尔第二种类型:Int”你能写更多完整的代码吗,因为它让我很困惑
startActivityForResult(scanIntegrator.createScanIntent(), REQUEST_CODE);
public class MainActivity extends Activity{
TextView hasilscan1, hasilscan2;
Button btnInputPerangkat, btnEditPerangkat;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hasilscan1 = (TextView) findViewById(R.id.hasilscan1);
btnInputPerangkat = (Button) findViewById(R.id.btnInputPerangkat);
btnEditPerangkat = (Button) findViewById(R.id.btnEditPerangkat);
btnInputPerangkat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
hasilscan1.setVisibility(TextView.INVISIBLE);
IntentIntegrator scanIntegrator = new IntentIntegrator(MainActivity.this);
startActivityForResult(scanIntegrator.createScanIntent(), 10);
}
});
btnEditPerangkat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
hasilscan1.setVisibility(TextView.INVISIBLE);
IntentIntegrator scanIntegrator = new IntentIntegrator(MainActivity.this);
startActivityForResult(scanIntegrator.createScanIntent(), 20);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode==10) {
if (resultCode == RESULT_OK) {
String scanContent = intent.getStringExtra("SCAN_RESULT");
hasilscan1.setText(scanContent);
Intent intent1 = new Intent(this, InputPerangkat.class);
intent1.putExtra("hasilscan1", hasilscan1.getText().toString());
startActivity(intent1);
} else if(resultCode==RESULT_CANCELED){
Toast.makeText(getApplicationContext(), "Not found", Toast.LENGTH_SHORT).show();
}
}
if (requestCode==20) {
if (resultCode == RESULT_OK) {
String scanContent = intent.getStringExtra("SCAN_RESULT");
hasilscan1.setText(scanContent);
Intent intent2 = new Intent(this, EditPerangkat.class);
intent2.putExtra("hasilscan1", hasilscan1.getText().toString());
startActivity(intent2);
} else if(resultCode==RESULT_CANCELED){
Toast.makeText(getApplicationContext(), "Not found", Toast.LENGTH_SHORT).show();
}
}
}