2014-02-10 3 views
-1

하나의 활동에 3 개의 버튼이 있습니다. 각 버튼을 클릭하면 activity_B가 시작되지만 내 질문은 어떤 버튼이 activity_B로 시작되는지 알 수있는 방법입니다.이전 활동에서 클릭 한 버튼을 알고 있음

갱신 :

  btn1.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       SharedPreferences prefs = PreferenceManager 
         .getDefaultSharedPreferences(LastDaysActivity.this); 
       prefs.edit().putString("Date1", btn1.getText().toString()).apply(); 


       Intent i = new Intent(LastDaysActivity.this, TabHostActivityLastDays.class); 
       i.putExtra("button", "1"); 
       startActivity(i); 



      } 
     }); 

활동 B :

 Toast.makeText(BatteryActivityLastDays.this, String.valueOf(my.getLastDaysValues(result1, 10)), Toast.LENGTH_SHORT).show(); 

    String intent = this.getIntent().getStringExtra("button"); 
    if (intent != null) 
    { 

     Toast.makeText(BatteryActivityLastDays.this , intent , Toast.LENGTH_SHORT).show(); 
    } 

답변

1

이 작업을 수행하는 방법에는 여러 가지가있을 수 있지만 아마도 가장 쉬운 방법은 Intent와 함께 extra을 전송하여 단지입니다. 클래스 같은 뭔가를 전송에서

,
Intent i = new Intent(..., ...); // obviously replace ... with the class and context 
i.putExtra("button", "btn1"); 
startActivity(i); 

와의

당신은 또한 SharedPreferences를 사용할 수 있지만,이 과잉 당신이 필요에 따라 할 수있다 클래스를

Intent intent = getIntent(); 
if (intent != null) 
{ 
    String clicked = intent.getStringExtra("button"); 
} 

를 수신하는 단계를 포함한다.

Intent Docs

+0

는 전 사용하는 경우는 한 Statment 같은 경우 (clicked.equal ("인 btn1") {//do something} ..? – user3245658

+0

그래, 사용하면된다.'Intent '를 통해 원하는대로'String','int'를 전달할 수 있으며, 문서의 모든 메소드를 보여줍니다. 당신은'if ("btn1".equals (clicked)) {'NPE'에 대해 보호합니다 .' onCreate()'(suc를 호출하기 전에'getIntent()'를 호출하지 않도록하십시오. h를 메소드의 외부로) 또는'null '이됩니다. – codeMagic

+0

고맙습니다. NPE – user3245658

0

사용 의도 엑스트라.

온 클릭있어서 내부 :

Intent activityBIntent = new Intent(ActivityA.this, ActivityB.class); 
activityBIntent.putExtra("button_clicked", 1); 
startActivity(activityBIntent); 

및 activityB의에서 onCreate 방법에서 예를 들어

Intent intent = getIntent(); 
if (intent != null){ 
    int buttonId = intent.getIntExtra("button_clicked", 0); 
} 
+0

Intent 유형의 getIntExtra (String, int) 메소드는 인수 (String)에 적용 할 수 없습니다. – user3245658

관련 문제