0

我对活性具有1不同onClickListeners和两种功能(犯罪和健康)2个按钮的不同瓦莱斯导致相同的活性2 ...传递不同的按钮

上的活动2我想以区分哪个按钮用户已经点击(无论是犯罪或健康),所以该应用程序可以生成相应的味精。

我使用putExtra和捆绑软件,也能够从活动1检索数据活动2但活动2我无法理解什么我应该使用if/else或switch语句,这样我就可以区分哪个按钮被用户按下了。

活动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); 

    } 
} 

活动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); 
    } 

} 

回答

1

假设HC意味着健康和ec意味着犯罪,那么我会做这样的事情。 首先,您需要使用一个键将数据传递给第二个活动,假设键是“选项”,然后在两个按钮中都写这个,但在第三行中,根据点击哪个按钮更改第二个值(“ ec“或”hc“)

final Intent intent = new Intent(getActivity(),HelpCall.class); 
Bundle b = new Bundle(); 
b.putString("option","ec"); 
intent.putExtras(b); 
startActivity(intent); 

现在在第二个活动中您将获得此值。

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 
} 
} 
}); 
+0

thanku @DaiwikDan你的回答是有帮助的....所有我没有得到的是如何发送关于按钮到下一个屏幕的东西.............所以谢谢 –

0

改变这些东西在你的代码

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(); 
     } 

    }); 
+0

感谢乌尔快速回复@MayankBhatnagar但不知道为什么,这给了我CALL_TYPE小错误........和我是如此我的东西,我没有检查有什么错误...... ,但现在我读取的代码和它的call_type没有任何值来自前一个屏幕...而是它的emergency_type获取值和call_type在这里以某种方式无关 。 但总体非常感谢回答 –

0

我无法理解什么样的的if/else或switch语句 我应该使用,所以我可以区分由用户按下哪个按钮

实际上,你可以将按钮ID传递到下一个活动

活动示例1

intent.putExtra("slot", v.getId()); 

在活动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 
    } 
2

好了,你基本上要由一个包放和获取数据。

的想法很简单:

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活动中,你只需要得到传递的值:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_help_call); 
    String data = getIntent().getExtras().get("option"); 
} 

data字符串将包含两种ECHC取决于上一个活动中单击的按钮。


也有一些改进,你可以在代码耦合方面做的,我已经写了几个初学者的文章,可能会帮助你解决这个的。

+0

谢谢@JaoquimLey你的回答对我来说工作得很好....所有我无法解决如何发送按钮信息发送按钮信息到其他屏幕......非常感谢 –

+0

如果你认为我的答案真的有效,为什么没有把它作为接受的答案? =) –

+0

嗯,那是因为我接受的答案也回答了我的问题,如果我问的问题......我的两个答案都是正确的,都为我工作,但他给了我一种完整回答我的问题 –