2017-10-15 117 views
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

嗯,那是因爲我接受的答案也回答了我的問題,如果我問的問題......我的兩個答案都是正確的,都爲我工作,但他給了我一種完整回答我的問題 –