Java Android中的多个Onactivityresult方法
我在片段中添加了Java Android中的多个Onactivityresult方法,java,android,Java,Android,我在片段中添加了onClick()按钮以显示结果。我还在MyActivity中添加了onActivityResult()方法。我想在更多片段中添加onClick()按钮,并显示结果 在这种情况下,我应该如何在activity中编写多个onActivityResult()方法 下面是我在ActivityResultMethod上的代码: button = (Button) view.findViewById(R.id.zing); button.setOnClickListener
onClick()
按钮以显示结果。我还在MyActivity
中添加了onActivityResult()
方法。我想在更多片段中添加onClick()
按钮,并显示结果
在这种情况下,我应该如何在activity中编写多个onActivityResult()
方法
下面是我在ActivityResultMethod上的代码:
button = (Button) view.findViewById(R.id.zing);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
IntentIntegrator scanIntegrator = new IntentIntegrator(getActivity());
scanIntegrator.initiateScan();
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
//super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode,
data);
Fragment fragment = this.getFragmentManager().findFragmentById(R.id.total_frame_content);
if (fragment instanceof CustomerIdFragment) {
if (scanResult != null) {
if (scanResult.getContents() == null) {
Toast.makeText(this, "Cancelled", Toast.LENGTH_SHORT).show();
} else {
//String customerSno = scanResult.getContents().substring(0, 10),
// passCode = scanResult.getContents().substring(10, 14);
Toast.makeText(this, " " + scanResult.getContents(), Toast.LENGTH_SHORT).show();
// System.out.println("Result" + scanResult.getContents());
}
}
}
}
您只需使用
开关
大小写即可实现以下功能:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
switch (requestCode) {
case REQUEST_CODE_CAPTURE_IMAGE:
if (requestCode == REQUEST_CODE_CAPTURE_IMAGE && resultCode == Activity.RESULT_OK ) {
//your code
break;
case PHOTO_PICKER_ID:
if (requestCode == PHOTO_PICKER_ID && resultCode == Activity.RESULT_OK && null != data) {
//your code
}
break;
}
} catch (Exception e)
{
Log.d("krvrrusbviuritiribtr", e.getMessage());
}
}
您只需使用
开关
大小写即可实现以下功能:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
switch (requestCode) {
case REQUEST_CODE_CAPTURE_IMAGE:
if (requestCode == REQUEST_CODE_CAPTURE_IMAGE && resultCode == Activity.RESULT_OK ) {
//your code
break;
case PHOTO_PICKER_ID:
if (requestCode == PHOTO_PICKER_ID && resultCode == Activity.RESULT_OK && null != data) {
//your code
}
break;
}
} catch (Exception e)
{
Log.d("krvrrusbviuritiribtr", e.getMessage());
}
}
尝试此方法,您无法多次跳过此方法,因此您将获得int值
startActivityForResult(intent,1);
关于活动结果的讨论
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1){
if(resultCode == RESULT_OK){
//do somthing
}
}
if(requestCode == 2){
if(resultCode == RESULT_OK){
//do somthing
}
}
if(requestCode == 3){
if(resultCode == RESULT_OK){
//do somthing
}
}
}
编辑的答案
在片段java文件中
private int PICK_IMAGE_REQUEST_CODE = 1;
btChoseFile = (Button)view.findViewById(R.id.btChoseFile);
btStar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setType("*/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST_CODE);
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == PICK_IMAGE_REQUEST_CODE){
Toast.makeText(getActivity(),"On Activity Result in fragment",Toast.LENGTH_LONG).show();
}
}
尝试此方法,您无法多次跳过此方法,因此您将获得int值
startActivityForResult(intent,1);
关于活动结果的讨论
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1){
if(resultCode == RESULT_OK){
//do somthing
}
}
if(requestCode == 2){
if(resultCode == RESULT_OK){
//do somthing
}
}
if(requestCode == 3){
if(resultCode == RESULT_OK){
//do somthing
}
}
}
编辑的答案
在片段java文件中
private int PICK_IMAGE_REQUEST_CODE = 1;
btChoseFile = (Button)view.findViewById(R.id.btChoseFile);
btStar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setType("*/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST_CODE);
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == PICK_IMAGE_REQUEST_CODE){
Toast.makeText(getActivity(),"On Activity Result in fragment",Toast.LENGTH_LONG).show();
}
}
调用startActivityForResult(意图、请求代码)时,您只需要使用不同的请求代码。此号码将发送到onActivityResult(请求代码、结果代码、意图) 在活动中为请求创建一些常量(称为MyActivity) 使用与请求调用相对应的常量
//startActivityForResult(intent,REQUEST_CODE);
在第一个片段中,您将使用
public void clickButton(View v){
startActivityForResult(intent,MyActivity.REQUEST_ONE);
}
public void clickButton(View v){
startActivityForResult(intent,MyActivity.REQUEST_TWO);
}
在第二个片段中,您将使用
public void clickButton(View v){
startActivityForResult(intent,MyActivity.REQUEST_ONE);
}
public void clickButton(View v){
startActivityForResult(intent,MyActivity.REQUEST_TWO);
}
然后,您只需要在活动中实现result方法来处理requestCode值以执行正确的代码。使用开关或其他条件。有更多的可能性(使用一些模式),但最简单的是那些
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if(requestCode == REQUEST_ONE){
// the code for request one
} else if(requestCode == REQUEST_TWO){
// the code for request two
} else {
super.onActivityResult(requestCode, resultCode, intent);
}
}
还是用开关
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
switch(requestCode)
case REQUEST_ONE:
// the code for request one
break;
case REQUEST_TWO:
// the code for request two
break;
default:
super.onActivityResult(requestCode, resultCode, intent);
}
}
如果您有太多请求,请为每个请求创建一个方法,这将使结果方法更具可读性。当您调用startActivityForResult(intent,requestCode)时,您只需要使用不同的请求代码。此号码将发送到onActivityResult(请求代码、结果代码、意图) 在活动中为请求创建一些常量(称为MyActivity) 使用与请求调用相对应的常量
//startActivityForResult(intent,REQUEST_CODE);
在第一个片段中,您将使用
public void clickButton(View v){
startActivityForResult(intent,MyActivity.REQUEST_ONE);
}
public void clickButton(View v){
startActivityForResult(intent,MyActivity.REQUEST_TWO);
}
在第二个片段中,您将使用
public void clickButton(View v){
startActivityForResult(intent,MyActivity.REQUEST_ONE);
}
public void clickButton(View v){
startActivityForResult(intent,MyActivity.REQUEST_TWO);
}
然后,您只需要在活动中实现result方法来处理requestCode值以执行正确的代码。使用开关或其他条件。有更多的可能性(使用一些模式),但最简单的是那些
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if(requestCode == REQUEST_ONE){
// the code for request one
} else if(requestCode == REQUEST_TWO){
// the code for request two
} else {
super.onActivityResult(requestCode, resultCode, intent);
}
}
还是用开关
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
switch(requestCode)
case REQUEST_ONE:
// the code for request one
break;
case REQUEST_TWO:
// the code for request two
break;
default:
super.onActivityResult(requestCode, resultCode, intent);
}
}
如果您有太多的请求,请为每个请求创建一个方法,这将使结果方法更具可读性。即使我的答案与其他方法相似,也没有人解释如何设置请求代码,因此我决定更正。好的,兄弟……无需在片段ha中编写任何内容?我应该在哪里调用startActivityForResult(intent,request\u one);片段不需要任何东西,除了一些信息的更新。带有REQUEST_ONE的方法只是一个关于如何使用代码调用特定请求的示例。这些应该从特定片段中的onClick方法调用。只需确保使用不同的requestCode来正确管理结果。我在回答中编辑了这一部分,以使其更具体。AxelH..如果我添加..startActivityForResult(intent,MyActivity.REQUEST_ONE);。。在片段上..在onclikmethod中显示错误..在意图位置..我在上面的代码中添加了onclik方法,即使我的答案与其他答案相似,也没有人解释如何设置requestCode,所以我决定更正它。好吧,兄弟..不需要在片段ha中写入任何内容?我应该在哪里调用startActivityForResult(意图,请求一);片段不需要任何东西,除了一些信息的更新。带有REQUEST_ONE的方法只是一个关于如何使用代码调用特定请求的示例。这些应该从特定片段中的onClick方法调用。只需确保使用不同的requestCode来正确管理结果。我在回答中编辑了这一部分,以使其更具体。AxelH..如果我添加..startActivityForResult(intent,MyActivity.REQUEST_ONE);。。在片段上..在onclikmethod中显示错误..在intent位置..我在android极客上面的代码中添加了onclik方法..我是android初学者..我应该在哪里调用startActivityForResult(intent,1);还有我的Onclik代码片段。。。。button=(button)view.findViewById(R.id.zing);setOnClickListener(new View.OnClickListener(){@Override public void onClick(视图v){IntentIntegrator scanigrator=new IntentIntegrator(getActivity());scanigrator.initiateScan();}});喜欢this@Kingraj对不起,我不明白你想做什么??如果你想为结果启动活动,你也可以通过按钮调用它,你也可以在片段中跳过onActivityResult No bro..onActivityResult未在片段中触发..我的意思是不在片段中工作fragment@Kingraj可能你做错了什么,否则你也可以使用在fagment中的onActivityResult在您的评论后,我在fragmetn中重试它也在fragmentandroid极客中工作…我是android初学者..我应该在哪里调用startActivityForResult(意图,1);还有我的Onclik代码片段。。。。button=(button)view.findViewById(R.id.zing);setOnClickListener(new View.OnClickListener(){@Override public void onClick(视图v){IntentIntegrator scanigrator=new IntentIntegrator(getActivity());scanigrator.initiateScan();}});喜欢this@Kingraj对不起,我不明白你想做什么??如果你想为结果启动活动,你也可以通过按钮调用它,你也可以在片段中跳过onActivityResult No bro..onActivityResult未在片段中触发..我的意思是不在片段中工作fragment@Kingraj也许你在做些什么