Android Intent封裝的實例詳解
什么是Intent:
Intent是協調應用間、組件之間的通訊和交互。通過Intent你可以啟動Activity、Service、Broadcasts。更可以跨程序調用第三方組件。例如:啟動撥打電話界面、音樂播放等。
| 組件 | 啟動 | 
| Activity | startActicity() | 
| Service | startService(),bindService( ) | 
| Broadcasts | sendBroadcast() | 
使用Intent:
栗子:在一個Activity中添加一個點擊按鈕->點擊啟動第二個Activity(需要兩個String類型的參數)
	     

第一個Activity的按鈕點擊代碼:
 public void onclick(View view){    Intent intent=new Intent(this,Main2Activity.class);    intent.putExtra("text1","xiaoming");    intent.putExtra("text2","中國人");    startActivity(intent);  }第二個Activity接受Intent數據代碼:
 protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main2);    ButterKnife.bind(this);    initView();  }  private void initView() {    String text1 = getIntent().getStringExtra("text1");    String text2 = getIntent().getStringExtra("text2");    mTextView.setText(text1);    mTextView2.setText(text2);  }這是常見的Intent的使用,但是它存在這很大弊端。假如你的項目越來越多,你在啟動第二個Activity中參數漏掉一個有可能引起程序奔潰。那么如何避免這種情況呢:
另一種思路代碼實現:
第一個Activity的按鈕點擊代碼:
 public void onclick(View view){    //調用第二個Activity封裝好的Intent    Intent intent = Main2Activity.newIntent(MainActivity.this, "hsis", "wodhis");    startActivity(intent);  }第二個Activity的代碼:
public class Main2Activity extends AppCompatActivity {  private static final String INTENT_TEXT1="intent_text1";  private static final String INTENT_TEXT2="intent_text2";  private String text1,text2;  @butterknife.Bind(R.id.textView)  TextView mTextView;  @butterknife.Bind(R.id.textView2)  TextView mTextView2;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main2);    ButterKnife.bind(this);    initIntent();    initView();  }  public static Intent newIntent(Activity activity,String te, String te2){    Intent intent=new Intent(activity,Main2Activity.class);    intent.putExtra(INTENT_TEXT1,te);    intent.putExtra(INTENT_TEXT2,te2);    return intent;  }  private void initIntent(){    text1=getIntent().getStringExtra(INTENT_TEXT1);    text2=getIntent().getStringExtra(INTENT_TEXT2);  }  private void initView() {    mTextView.setText(text1);    mTextView2.setText(text2);  }}通過比較,很明顯我們把Intent需要的傳參邏輯封裝到所要啟動的Activity,這樣的好處就是,按照我的規則來啟動我。《我的規則我做主》。而且在其他地方啟動Main2Activity時,直接調用newIntent()傳入相應的參數即可。
如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答