Activityに関するメモ

1487 ワード

1.startActivityの作業手順


startActivityを呼び出すとオペレーティングシステムのActivity Managerに渡され、Activity Managerが別のactivityを起動します.

2.アクティビティの開始とデータの転送

  • startActivity ForResultで起動したActivityはfinishActivity(int requestCode)関数で
  • を破棄する
  • startActivity ForResultの使い方
  • はstartActivity ForResult(Intent intent,int requestCoed)を呼び出し、ここでIntentは2番目のactivityを起動する意図であり、requestCoedはonActivity Result()コールバックでいつ起動したのか、どのActivityが起動したのかを区別するために使用される.
  • Intent intent = new Intent(MainActivity.this,SecondActivity.class);
    startActivityForResult(intent,1);
    
  • 起動されたActivityはsetResult(int resultCode,Intent data)メソッドを呼び出して起動されたActivityにデータ(Intentに包まれた)
  • を返すことができる.
    Intent intent = new Intent();
    intent.putExtra("data_return","Hello MainActivity");
    setResult(RESULT_OK,intent);
    
  • Activity実装onActivity Result()コールバックを開始し、データ
  • を取得する.
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          switch (requestCode){
              case 1:
                  if(resultCode == RESULT_OK){
                      Log.i(TAG, "onActivityResult: result:"+data.getStringExtra("data_return"));
                  }
          }
      }
    
  • が起動されたActivityは、そのActivityを起動して伝達されたデータを取得し、getIntent()メソッドを呼び出して自分が使用したIntentを起動し、IntentのgetXXX()メソッドを呼び出して取得すればよい.
  • Bundleとは何ですか?

  • Bundleはデータを格納するための集合で、キー値ペアの形式を採用し、通常はIntentがデータを伝達する過程でデータを格納する.