亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android技巧:003使用Intent連接多個活動

發布時間:2020-04-07 06:05:41 來源:網絡 閱讀:389 作者:nineteens 欄目:移動開發

  Intent 是 Android 各組件之間進行交互的一種重要方式,一般被用于啟動活動、啟動服務以及發送廣播等場景。

  顯式 Intent:

  Intent 有多個構造函數重載,其中一個 Intent(Context packageContext,Class cls)。第一個參數要求提供一個啟動活動的上下文,第二個參數是指向想要啟動的目標活動。創建好 Intent 后,用 startActivity() 方法啟動即可。

  如下,在 MainActivity 中的一個按鈕的點擊后,啟動 first_activity:

  public void onClick(View v) {

  Intent intent = new Intent(MainActivity.this,first_activity.class);

  startActivity(intent);

  }

  隱式 Intent:

  隱式 Intent 不像顯式那樣明確指出要啟動哪一個活動,而是指定一系列更為抽象的 action 和 category 等信息,只有當action 和 category 信息完全匹配時才能成功啟動。

  首先在 AndroidManifest.xml 中的 標簽下配置 內容,如下:

  其中 標簽中指明活動可以響應 com.lodge.myapplication.ACTION_START 。然后在另一個 activity 中按鈕的點擊事件添加如下代碼:

  button_2.setOnClickListener(new View.OnClickListener() {

  @Override

  public void onClick(View v) {

  Intent intent = new Intent("com.lodge.myapplication.ACTION_START"); //隱式Intent;

  startActivity(intent);

  }

  });

  這里的 intent 是另一個構造函數,直接將 action 的字符串傳了進去,表示想要啟動能夠響應 com.lodge.myapplication.ACTION_START 這個 action 的活動。另外,因為 category 參數設置為 android.intent.category.DEFAULT ,代表默認設置,所以在 intent 中未加入 category。

  其實每個 intent 中只能指定一個 action,但卻能指定多個 category。例如:

  button_2.setOnClickListener(new View.OnClickListener() {

  @Override

  public void onClick(View v) {

  Intent intent = new Intent("com.lodge.myapplication.ACTION_START"); //隱式Intent;

  intent.addCategory("com.lodge.myapplication.MY_CATEGORY");

  startActivity(intent);

  }

  });

  當然,在 AndroidManifest.xml 中 標簽下的 里也要添加 內容,如下:

  更多隱式 intent:

  使用隱式 intent 啟動其他程序的活動。例如打開系統瀏覽器,在按鈕點擊事件中添加如下代碼:

  button_3.setOnClickListener(new View.OnClickListener() {

  @Override

  public void onClick(View v) {

  Intent intent = new Intent(Intent.ACTION_VIEW); //更多隱式Intent;

  intent.setData(Uri.parse("http://www.baidu.com"));

  startActivity(intent);

  }

  });

  這里的 Intent.ACTION_VIEW 是內置動作。

  向下一個活動傳遞數據:

  Intent 中的 putExtra() 方法可以把我們想要傳遞的數據保存在 Intent 中,啟動另一個活動后,再把數據從 Intent 中取出即可。

  //上一個活動傳送數據;

  button.setOnClickListener(new View.OnClickListener() {

  @Override

  public void onClick(View v) {

  String data = "hello intent put_Extra";

  Intent intent = new Intent(MainActivity.this,first_activity.class);

  intent.putExtra("extra_data",data); //傳遞數據,第一個參數是鍵值,后一個參數是要傳遞的數據;

  startActivity(intent);

  }

  });

  //下一個活動獲取數據;

  @Override

  protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_first);

  Intent intent = getIntent(); //獲取用于啟動本activity的intent;

  String data = intent.getStringExtra("extra_data"); //傳入相應鍵值,獲得數據;

  Log.d("first_activity",data); //打印數據;

  }無錫專業婦科醫院 http://www.xasgyy.net

  返回數據給上一個活動:

  Activity 中有一個 startActivityForResult() 方法也是用于啟動活動的,但是這個方法期望在活動銷毀的時候能夠返回一個結果給上一個活動。

  //啟動活動;

  button.setOnClickListener(new View.OnClickListener() {

  @Override

  public void onClick(View v) {

  Intent intent = new Intent(MainActivity.this,second_activity.class);

  startActivityForResult(intent,1); //接收啟動的下一個活動返回的數據,第二個參數是請求碼,只要是唯一值就行,這里是 1 ;

  }

  });

  @Override

  //重寫onActivityResult()方法,用于響應startActivityForResult()方法啟動的活動;

  protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

  switch (requestCode)

  {

  case 1:

  if(resultCode == RESULT_OK)

  {

  String returnedData = data.getStringExtra("return_data");

  Log.d("main_activity",returnedData);

  }

  break;

  }

  }

  //子活動設置按鈕銷毀活動(return_button) ;

  @Override

  protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_second);

  Button button = findViewById(R.id.return_button);

  button.setOnClickListener(new View.OnClickListener() {

  @Override

  public void onClick(View v) {

  Intent intent = new Intent();

  intent.putExtra("return_data","hello main_activity!");

  setResult(RESULT_OK,intent);

  finish(); //銷毀當前活動;

  }

  });

  }

  @Override

  //重寫按下返回鍵的方法,實現與 return_button 相同的功能;

  public void onBackPressed() {

  Intent intent = new Intent();

  intent.putExtra("return_data","hello back to main_activity!");

  setResult(RESULT_OK,intent)

  finish(); //銷毀當前活動;

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宣化县| 贺兰县| 莲花县| 唐山市| 大荔县| 武夷山市| 达拉特旗| 勐海县| 和林格尔县| 东源县| 忻州市| 巨野县| 富蕴县| 滦平县| 开封市| 甘孜县| 建德市| 泸州市| 贞丰县| 凤山市| 镇康县| 年辖:市辖区| 疏勒县| 鄯善县| 和政县| 大姚县| 田东县| 兴山县| 平遥县| 普洱| 大理市| 高密市| 诸城市| 青海省| 炎陵县| 梅河口市| 鄯善县| 淮滨县| 乌兰县| 天台县| 黎平县|