Java 如何检查startActivityForResult、override onActivityResult方法中按下的按钮?
我有三个按钮(R.id.1、R.id.2、R.id.3)和三个文本视图(a、b、c)。如何检查在ActivityResult上按下的按钮,以便根据按钮设置文本视图Java 如何检查startActivityForResult、override onActivityResult方法中按下的按钮?,java,android,button,onactivityresult,Java,Android,Button,Onactivityresult,我有三个按钮(R.id.1、R.id.2、R.id.3)和三个文本视图(a、b、c)。如何检查在ActivityResult上按下的按钮,以便根据按钮设置文本视图 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode) { case 0: //check which button
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode)
{
case 0:
//check which button was pressed
String b = data.getStringExtra("a");
//Apply setText(b);
}
break;
case 1:
//check which button was pressed
String result1=data.getStringExtra("text");
// Apply setText(result);
break;
case 2:
// check which button was pressed
String b2 = data.getStringExtra("a");
// Apply setText (b2);
break;
示例:在案例0中,按下了R.id.1,a.setText(b)也会按下。
If R.id.1 was pressed, a.setText()
If R.id.2 was pressed, b.setText()
If R.id.3 was pressed, c.setText()
代码
Button button1 = (Button) claims.findViewById(R.id.1);
Button button2 = (Button) claims.findViewById(R.id.2);
Button button3 = (Button)claims.findViewById(R.id.3);
a=(TextView)claims.findViewById(R.id.textView1);
b=(TextView)claims.findViewById(R.id.textView2);
c=(TextView)claims.findViewById(R.id.textView3);
button1.setOnClickListener(listener);
button2.setOnClickListener(listener);
button3.setOnClickListener(listener);
View.OnClickListener listener = new View.OnClickListener() {
public void onClick(View v) {
AlertDialogRadio();
}
};
public void AlertDialogRadio() {
final CharSequence[] ClaimsModel = {"Sunny", "Raining", "Cloudy"};
AlertDialog.Builder alt_bld = new AlertDialog.Builder(getActivity());
alt_bld.setTitle("Select Weather");
alt_bld.setSingleChoiceItems(ClaimsModel, -1, new DialogInterface
.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if (item == 0) {
Intent intent = new Intent(getActivity().getApplicationContext(), Sunny.class);
startActivityForResult(intent, 0);
} else if (item == 1) {
Intent intent = new Intent(getActivity().getApplicationContext(), Rainy.class);
startActivityForResult(intent, 1);
} else if (item == 2) {
Intent intent = new Intent(getActivity().getApplicationContext(), Cloudy.class);
startActivityForResult(intent, 2);
}
}
dialog.dismiss();
}
});
AlertDialog alert = alt_bld.create();
alert.show();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode)
{
case 0:
//check which button was pressed
String b = data.getStringExtra("a");
//Apply setText(b);
}
break;
case 1:
//check which button was pressed
String result1=data.getStringExtra("text");
// Apply setText(result);
break;
case 2:
// check which button was pressed
String b2 = data.getStringExtra("a");
// Apply setText (b2);
break;
}
已编辑
AlertDialog.Builder alt_bld = new AlertDialog.Builder(getActivity());
alt_bld.setTitle("Select a Claims");
alt_bld.setSingleChoiceItems(ClaimsModel, -1, new DialogInterface
.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if (item == 0) {
Intent intent = new Intent(getActivity().getApplicationContext(), Project1.class);
startActivityForResult(intent, requestCode);
} else if (item == 1) {
Intent intent = new Intent(getActivity().getApplicationContext(), Petrol.class);
startActivityForResult(intent, requestCode);
} else if (item == 2) {
Intent intent = new Intent(getActivity().getApplicationContext(), CarMainten.class);
startActivityForResult(intent, requestCode);
} else if (item == 3) {
Intent intent = new Intent(getActivity().getApplicationContext(), Medical.class);
startActivityForResult(intent, requestCode);
} else if (item == 4) {
Intent intent = new Intent(getActivity().getApplicationContext(), Other.class);
startActivityForResult(intent, requestCode);
}
dialog.dismiss();
}
});
AlertDialog alert = alt_bld.create();
alert.show();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Toast.makeText(getActivity(), "Not coeted ", Toast.LENGTH_LONG).show();
switch (requestCode) {
case requestCode1:
String result = data.getStringExtra("text");
String b = data.getStringExtra("a");
c.setText(" " + b + "------" + "RM " + result);
Toast.makeText(getActivity(), "Not completed ", Toast.LENGTH_LONG).show();
break;
case requestCode2:
String result1 = data.getStringExtra("text");
String b1 = data.getStringExtra("a");
c.setText(" " + b1 + "------" + "RM " + result1);
break;
case requestCode3:
String result2 = data.getStringExtra("text");
String b2 = data.getStringExtra("a");
c.setText(" " + b2 + "------" + "RM " + result2);
break;
}
}
您可以使用请求代码进行检查
View.OnClickListener listener = new View.OnClickListener() {
public void onClick(View v) {
AlertDialogRadio(v.getId());
}
};
public void AlertDialogRadio(int id) {
final CharSequence[] ClaimsModel = {"Sunny", "Raining", "Cloudy"};
switch(id){
case R.id.1:
break;
case R.id.2:
break;
case R.id.3:
break;
}
Bundle bundle = new Bundle();
bundle.putString("key", "value");
AlertDialog.Builder alt_bld = new AlertDialog.Builder(getActivity());
alt_bld.setTitle("Select Weather");
alt_bld.setSingleChoiceItems(ClaimsModel, -1, new DialogInterface
.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if (item == 0) {
Intent intent = new Intent(getActivity().getApplicationContext(), Sunny.class);
startActivityForResult(intent, 0, bundle);
} else if (item == 1) {
Intent intent = new Intent(getActivity().getApplicationContext(), Rainy.class);
startActivityForResult(intent, 1, bundle);
} else if (item == 2) {
Intent intent = new Intent(getActivity().getApplicationContext(), Cloudy.class);
startActivityForResult(intent, 2, bundle);
}
}
dialog.dismiss();
}
});
AlertDialog alert = alt_bld.create();
alert.show();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Bundle bundle = data.getExtras();
// this can any data that you passed
String anyData = bundle.getString();
switch(requestCode)
{
case 0:
//check which button was pressed
String b = data.getStringExtra("a");
//Apply setText(b);
}
break;
case 1:
//check which button was pressed
String result1=data.getStringExtra("text");
// Apply setText(result);
break;
case 2:
// check which button was pressed
String b2 = data.getStringExtra("a");
// Apply setText (b2);
break;
}
你能解释一下吗?我应该在哪里添加startActivityForResult(intent,requestCode1);?您应该添加startActivityForResult(intent,requestcode1);单击相应按钮的函数,但三个按钮具有相同的函数,即调用AlertDialogRadio()在AlertDialogRadio中添加变量requestCode检查我编辑的代码您可以在onActivityResult中使用开关,如果我在AlertRadioDialog中添加开关(id),则可以删除我使用的其他按钮,最后,编译器如何知道按下了哪个按钮?请注意代码。AlertDialogRadio(v.getId());使用视图id,您可以检测单击了哪个按钮,但我应该在onActivityResult?编辑的代码中写入什么内容。您可以使用bundle将任何数据传递给onAvtivityResult
int requestCode1 = 1;
int requestCode2 = 2;
int requestCode3 = 3;
Button b1 =(Button) findViewById(R.id.button1);
Button b2 =(Button) findViewById(R.id.button2);
Button b3 =(Button) findViewById(R.id.button3);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialogRadio(requestCode1)
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialogRadio(requestCode2)
}
});
b3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialogRadio(requestCode3)
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == requestCode1){}//button 1
else if(resultCode == requestCode2){}//button 2
else if(resultCode == requestCode3){}//button 3
}
public void AlertDialogRadio(final int requestCode) {
final CharSequence[] ClaimsModel = {"Sunny", "Raining", "Cloudy"};
AlertDialog.Builder alt_bld = new AlertDialog.Builder(getActivity());
alt_bld.setTitle("Select Weather");
alt_bld.setSingleChoiceItems(ClaimsModel, -1, new DialogInterface
.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if (item == 0) {
Intent intent = new Intent(getActivity().getApplicationContext(), Sunny.class);
startActivityForResult(intent, requestCode);
} else if (item == 1) {
Intent intent = new Intent(getActivity().getApplicationContext(), Rainy.class);
startActivityForResult(intent, requestCode);
} else if (item == 2) {
Intent intent = new Intent(getActivity().getApplicationContext(), Cloudy.class);
startActivityForResult(intent, requestCode);
}
}
dialog.dismiss();
}
});
AlertDialog alert = alt_bld.create();
alert.show();