本人小白,大學期間,打算開始自學Android,準備用博客寫下所學所得,希望有所收獲,望大家互相幫助
相比于顯式 Intent,隱式Intent 則含蓄了許多,它并不明確指出我們想要啟動哪一個活動,而是指定了一系列更為抽象的action 和 category等信息,然后交由系統去分析這個 Intent,并幫我們找出合適的活動去啟動。
在AndroidManifest.xml 中可以指定當前活動能夠響應的action和 category
打開 AndroidManifest.xml,添加如下代碼:<activity android:name=".SecondActivity" ><intent-filter><action android:name="com.example.activitytest.ACTION_START" /> //在<action>標簽中我們指明了當前活
//動可以響應com.example.activitytest.ACTION_
//START這個 action <category android:name="android.intent.category.DEFAULT" />//<category>標簽則包含了一些附加信息,
//更精確地指明了當前的活動//能夠響應的 Intent 中還可能帶有的category </intent-filter></activity> 只有<action>和<category>中的內容同時能夠匹配上Intent 中指定的 action 和 category時,這個活動才能響應該 Intent。
修改 FirstActivity 中按鈕的點擊事件,代碼如下所示:button1.setOnClickListener(new OnClickListener() {public void onClick(View v) {Intent intent = new Intent("com.example.activitytest.ACTION_START");startActivity(intent);}});
我們使用了 Intent的另一個構造函數,直接將 action的字符串傳了進去,表明我們想要啟動能夠響應com.example.activitytest.ACTION_START這個 action 的活動。
java代碼中沒指定category 是因為android.intent.category.DEFAULT是一種默認的 category,在調用startActivity()方法的時候會自動將這個category 添加到 Intent 中。 每個 Intent 中只能指定一個action,但卻能指定多個 category。 修改 FirstActivity 中按鈕的點擊事件,代碼如下所示:button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent("com.example.activitytest.ACTION_START");intent.addCategory("com.example.activitytest.MY_CATEGORY");startActivity(intent);}}); 可以調用 Intent 中的addCategory()方法來添加一個category,這里我們指定了一個自定義的category,值為 com.example.activitytest.MY_CATEGORY。記得要在SecondActivity 的<intent-filter>標簽中并沒有聲明可以響應這個category 在<intent-filter>中再添加一個category 的聲明,如下所示:<activity android:name=".SecondActivity" ><intent-filter><action android:name="com.example.activitytest.ACTION_START" /><category android:name="android.intent.category.DEFAULT" /><category android:name="com.example.activitytest.MY_CATEGORY"/></intent-filter></activity>
新聞熱點
疑難解答