2014-05-07 25 views
0

監聽onActivityResault所以問題是:在View.OnCLickListener

我在代碼生成contentViewforforeach循環,並有所有的聽衆的動態生成的按鈕。但是,如果我想在某些TextView或某事中進行更改,我會開始一個新的活動,並且我想在聽衆內部聽取onActivityResult。 我想知道如果這甚至是可能的,我真的可以使用一些幫助。

這裏是我的代碼:

Button goliButton = new Button(this); 
     goliButton.setText("+"); 
     goliButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Intent i = new Intent(TekmaLive.this,DodajStrel.class); 
       i.putExtra("MINUTA", currTime /1000 + cetrtina * 15 * 60); 
       i.putExtra("TEKMA", tekmaId); 
       i.putExtra("IGRALKA", Integer.parseInt(igralka[0])); 
       i.putExtra("GOL", true); 
       TekmaLive.this.startActivity(i); 
       //Insted of startActivity I would use startActivityForResult... 
      } 
     }); 

回答

0

您不能讓方法「等待」活動返回其結果,如果這就是您要求的原因,則startActivity()是異步的。但是,通過「記住」哪個按鈕觸發事件,即通過在活動中引用變量(pressed按鈕),您可以達到相同效果。

final Button goliButton = new Button(this); // <--- 
    goliButton.setText("+"); 
    goliButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(TekmaLive.this,DodajStrel.class); 
      i.putExtra("MINUTA", currTime /1000 + cetrtina * 15 * 60); 
      i.putExtra("TEKMA", tekmaId); 
      i.putExtra("IGRALKA", Integer.parseInt(igralka[0])); 
      i.putExtra("GOL", true); 
      TekmaLive.this.pressedButton = goliButton; // <--- 
      TekmaLive.this.startActivityForResult(i, YOUR_REQUEST_CODE); // <--- 
     } 
    }); 

然後,只要在onActivityResult()中讀取pressed按鈕。

此外,您應該使用startActivityForResult()而不是startActivity(),以便以後調用onActivityResult()。

+0

好吧,你稍微忽略了一點,我對生成的代碼如下所示: 的(...){// 讀自數據庫 TextView的富=新的TextView(本); ... row.addView (富); } 所以我不能直接訪問它。 – klemen676

+0

是的,確切地說。我更新了相信你應該做出的更改。 – matiash

+0

好的,但我怎麼可以訪問在for循環內聲明的TextView? – klemen676

0

我看到,在你的代碼中使用startActivity。如果您想要返回結果,則應該使用startActivityForResult

onActivityResult是屬於ActivityFragment的方法。如果您從Activity撥打電話startActivityForResult,則當您的孩子活動調用finish方法時,將會調用該活動實例的相應onActivityResult

你可以在你的情況下做什麼是讓你的活動實施View.OnClickListener。這樣你的結果將在偵聽器中返回。

相關問題