Android RoboGuice使用指南(17):Inject Extra

來源:互聯網
上載者:User

使用Intent 啟動一個Activity,Service等時,可以通過putExtra 傳送資料,被觸發的Activity,Service可以使用getIntent()的getExtras 取的Extra的Bundle ,然後再根據Extra的索引值(Key)取的對應的參數值。

RoboGuice提供了一個簡潔的方法來取得 這些Extra 值,通過@InjectExtra 標記。

本例使用兩個Activity,InjectExtraDemo 用來觸發InjectExtraReceiver,在InjectExtraDemo中建立Intent時,通過putExtra 放置兩個參數Extra1,Extra2.

[java] public class InjectExtraDemo extends RoboActivity { 
  
 @InjectView (R.id.button) Button button; 
 @Inject Context context; 
  
 @Override 
 public void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.injectextra); 
 button.setOnClickListener(mGoListener); 
 } 
  
 private OnClickListener mGoListener = new OnClickListener() 
 { 
 public void onClick(View v) 
 { 
 Intent di = new Intent(); 
 di.setClass(context, InjectExtraReceiver.class) ; 
 di.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
 | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
 di.putExtra("Extra1","Message1"); 
 di.putExtra("Extra2","Message2"); 
 context.startActivity(di); 
 } 
 }; 
  

public class InjectExtraDemo extends RoboActivity {
 
 @InjectView (R.id.button) Button button;
 @Inject Context context;
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.injectextra);
 button.setOnClickListener(mGoListener);
 }
 
 private OnClickListener mGoListener = new OnClickListener()
 {
 public void onClick(View v)
 {
 Intent di = new Intent();
 di.setClass(context, InjectExtraReceiver.class) ;
 di.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
 | Intent.FLAG_ACTIVITY_SINGLE_TOP);
 di.putExtra("Extra1","Message1");
 di.putExtra("Extra2","Message2");
 context.startActivity(di);
 }
 };
 
}

 

在InjectExtraReceiver 通過@InjectExtra 標記 ,Roboguice自動為這些變數注入由Intent傳入的值,Optional=true表示該Extra為可選,如果傳入的Intent不含這個Extra時,值為null.

[java] public class InjectExtraReceiver extends RoboActivity{ 
  
 @InjectView (R.id.textview) TextView textView; 
 @InjectExtra ("Extra1" ) String extra1; 
 @InjectExtra ("Extra2" ) String extra2; 
 @InjectExtra (value="Extra3" , optional=true) String extra3; 
  
 @Override 
 public void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
  
 setContentView(R.layout.injectextrareceiver); 
  
 textView.setText("Extra1:"+extra1 
 +"\r\nExtra2:"+extra2 
 +"\r\nExtra3:"+extra3); 
  
 } 
  


 
 

 

本例下載:http://www.bkjia.com/uploadfile/2012/0507/20120507110758371.zip





摘自 引路蜂移動軟體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.