传递不同按钮的不同值
passing different vales of different buttons
我在 activity 1(犯罪和健康)上有 2 个按钮具有不同的 onClickListeners,并且两个函数导致相同的 activity 2...
on activity 2 我想区分用户点击了哪个按钮(无论是犯罪还是健康),以便应用程序可以生成相应的消息..
我正在使用 putExtra 和 bundle 并且还能够从 activity 1 到 activity 2 检索数据但是在 activity 2 上我无法理解哪种 if/else 或者我应该使用 switch 语句,这样我就可以区分用户按下了哪个按钮
ACTIVITY 1 - 轻微
public class Minor extends Fragment implements View.OnClickListener{
public String option;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.minor_view, container, false);
Button ec = view.findViewById(R.id.ec);
ec.setOnClickListener(this);
Button hc = view.findViewById(R.id.hc);
hc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Object view=null;
buttonClicked( (View) view );
}
});
return view;
}
@Override
public void onClick(View view) {
final Intent intent = new Intent(getActivity(),HelpCall.class);
Bundle b = new Bundle();
b.putString(option,"ec");
intent.putExtras(b);
startActivity(intent);
}
public void buttonClicked (View v)
{
final Intent intent = new Intent(getActivity(),HelpCall.class);
Bundle b = new Bundle();
b.putString( option,"hc");
intent.putExtras(b);
startActivity(intent);
}
}
Activity 2 - HelpCall
public class HelpCall extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_help_call );
Bundle b = getIntent().getExtras();
String ec = b.getString("ec");
String hc = b.getString("hc");
Button sms = (Button) findViewById(R.id.sms);
sms.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// sendSms( "number", "Emergency.. " );
Toast.makeText( getApplicationContext(), "emergency call crime / health", Toast.LENGTH_LONG ).show();
}
});
}
private void sendSms(String phoneNumber, String message){
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, null, null);
}
}
在代码中更改这些内容
public String option;
到
public String option = "value";
和
Bundle b = getIntent().getExtras();
String emergency_type = b.getString("value");
String call_type;
if(call_type.equalsIgnoreCase("ec"){
call_type= "ec" ;
}
else{
call_type = "hc";
}
Button sms = (Button) findViewById(R.id.sms);
sms.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// sendSms( "number", "Emergency.. " );
Toast.makeText( getApplicationContext(), "emergency call " + call_type, Toast.LENGTH_LONG ).show();
}
});
i am unable to understand what sort of if/else or switch statement
should i use so i could differentiate which button is pressed by user
您实际上可以将按钮 ID 传递给下一个 activity
示例 activity 1
intent.putExtra("slot", v.getId());
在activity 2
int buttonId = getIntent().getIntExtra("slot", 0);
switch() {
case R.id.firstbutton:
//Do what you want
break;
case R.id.secondbutton:
//Do What you whant
}
好的,所以您基本上想要从包中放入和获取数据。
思路很简单:
hc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Intent intent = new Intent(getActivity(),HelpCall.class);
Bundle b = new Bundle();
b.putString("option", "hc");
intent.putExtras(b);
startActivity(intent);
}
});
ec.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Intent intent = new Intent(getActivity(),HelpCall.class);
Bundle b = new Bundle();
b.putString("option", "ec");
intent.putExtras(b);
startActivity(intent);
}
});
而在您的第二个 HelpCall
activity 中,您只需要获取传递的值:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_help_call );
String data = getIntent().getExtras().get("option");
}
此 data
字符串将包含 ec 或 hc,具体取决于上一个 [=41= 中单击的按钮].
您还可以在代码耦合方面进行一些改进,我写了几篇初学者文章,可能会帮助您解决这个问题。
假设 hc 表示健康,ec 表示犯罪,那么我会这样做。
首先,您需要使用一个键将数据传递给第二个 activity,假设键是 "option",然后在您的两个按钮中都写这个,但在第三行中根据哪个更改第二个值按钮被点击("ec" 或 "hc")
final Intent intent = new Intent(getActivity(),HelpCall.class);
Bundle b = new Bundle();
b.putString("option","ec");
intent.putExtras(b);
startActivity(intent);
现在在第二个 activity 你会得到这个值。
Bundle b = getIntent().getExtras();
String option = b.getString("option");
现在在点击侦听器中
sms.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//sendSms( "number", "Emergency.. " );
if(option.contentEquals("ec")){
//crime clicked do thing here
}
else{
//health clicked do thing here
}
}
});
我在 activity 1(犯罪和健康)上有 2 个按钮具有不同的 onClickListeners,并且两个函数导致相同的 activity 2...
on activity 2 我想区分用户点击了哪个按钮(无论是犯罪还是健康),以便应用程序可以生成相应的消息..
我正在使用 putExtra 和 bundle 并且还能够从 activity 1 到 activity 2 检索数据但是在 activity 2 上我无法理解哪种 if/else 或者我应该使用 switch 语句,这样我就可以区分用户按下了哪个按钮
ACTIVITY 1 - 轻微
public class Minor extends Fragment implements View.OnClickListener{
public String option;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.minor_view, container, false);
Button ec = view.findViewById(R.id.ec);
ec.setOnClickListener(this);
Button hc = view.findViewById(R.id.hc);
hc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Object view=null;
buttonClicked( (View) view );
}
});
return view;
}
@Override
public void onClick(View view) {
final Intent intent = new Intent(getActivity(),HelpCall.class);
Bundle b = new Bundle();
b.putString(option,"ec");
intent.putExtras(b);
startActivity(intent);
}
public void buttonClicked (View v)
{
final Intent intent = new Intent(getActivity(),HelpCall.class);
Bundle b = new Bundle();
b.putString( option,"hc");
intent.putExtras(b);
startActivity(intent);
}
}
Activity 2 - HelpCall
public class HelpCall extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_help_call );
Bundle b = getIntent().getExtras();
String ec = b.getString("ec");
String hc = b.getString("hc");
Button sms = (Button) findViewById(R.id.sms);
sms.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// sendSms( "number", "Emergency.. " );
Toast.makeText( getApplicationContext(), "emergency call crime / health", Toast.LENGTH_LONG ).show();
}
});
}
private void sendSms(String phoneNumber, String message){
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, null, null);
}
}
在代码中更改这些内容
public String option;
到
public String option = "value";
和
Bundle b = getIntent().getExtras();
String emergency_type = b.getString("value");
String call_type;
if(call_type.equalsIgnoreCase("ec"){
call_type= "ec" ;
}
else{
call_type = "hc";
}
Button sms = (Button) findViewById(R.id.sms);
sms.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// sendSms( "number", "Emergency.. " );
Toast.makeText( getApplicationContext(), "emergency call " + call_type, Toast.LENGTH_LONG ).show();
}
});
i am unable to understand what sort of if/else or switch statement should i use so i could differentiate which button is pressed by user
您实际上可以将按钮 ID 传递给下一个 activity
示例 activity 1
intent.putExtra("slot", v.getId());
在activity 2
int buttonId = getIntent().getIntExtra("slot", 0);
switch() {
case R.id.firstbutton:
//Do what you want
break;
case R.id.secondbutton:
//Do What you whant
}
好的,所以您基本上想要从包中放入和获取数据。
思路很简单:
hc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Intent intent = new Intent(getActivity(),HelpCall.class);
Bundle b = new Bundle();
b.putString("option", "hc");
intent.putExtras(b);
startActivity(intent);
}
});
ec.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Intent intent = new Intent(getActivity(),HelpCall.class);
Bundle b = new Bundle();
b.putString("option", "ec");
intent.putExtras(b);
startActivity(intent);
}
});
而在您的第二个 HelpCall
activity 中,您只需要获取传递的值:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_help_call );
String data = getIntent().getExtras().get("option");
}
此 data
字符串将包含 ec 或 hc,具体取决于上一个 [=41= 中单击的按钮].
您还可以在代码耦合方面进行一些改进,我写了几篇初学者文章,可能会帮助您解决这个问题。
假设 hc 表示健康,ec 表示犯罪,那么我会这样做。 首先,您需要使用一个键将数据传递给第二个 activity,假设键是 "option",然后在您的两个按钮中都写这个,但在第三行中根据哪个更改第二个值按钮被点击("ec" 或 "hc")
final Intent intent = new Intent(getActivity(),HelpCall.class);
Bundle b = new Bundle();
b.putString("option","ec");
intent.putExtras(b);
startActivity(intent);
现在在第二个 activity 你会得到这个值。
Bundle b = getIntent().getExtras();
String option = b.getString("option");
现在在点击侦听器中
sms.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//sendSms( "number", "Emergency.. " );
if(option.contentEquals("ec")){
//crime clicked do thing here
}
else{
//health clicked do thing here
}
}
});