#実現したいこと
Andoroid端末にインストールされている外部アプリケーションを呼び出して、
値を返すようなプログラムを組んでいるのですが値がうまく取れません。
(サンプルコードで、Log.D("BActivity","$array")で値を表示したい)
#サンプルコード(処理イメージを記載しています)
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) var array:ByteArray? = byteArrayOf() // 送信ボタンを定義 val button = findViewById<Button>(R.id.inputButton) // ボタンをクリック時の処理 button.setOnClickListener { fun A(){ val intentA = Intent(Intent.ACTION_SEND) startActivityForResult(intentA, AActivity) } fun B(){ A() val intentB = Intent(Intent.ACTION_SEND) startActivityForResult(intentB, BActivity) C() } fun C(){ val intentC = Intent(Intent.ACTION_SEND) startActivityForResult(intentC, CActivity) } B() } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { // 初期処理 when(requestCode){ AActivity -> { this.array = data?.getByteArrayExtra("number") Log.D("AActivity","1") } BActivity -> { Log.D("BActivity","$array") Log.D("BActivity","2") } CActivity -> { Log.D("CActivity","3") } } } }
#実行結果イメージ
D/CActivity:3
D/null
D/BActivity:2
D/AActivity:1
#質問内容
0. onActivityResultの実行順序についてなのですが、
「setOnClickListener」で呼び出した順番と逆になっています。
イメージ的には呼び出し順番に返ってくると思っていたのですが、
これは最後に呼び出したものから実行されるものなのでしょうか。
それとも呼び出し先のアプリケーションの仕様の問題ですか?
0. 繰り返し実行をすると「Log.D("BActivity","$array")」に値が入っていたりいなかったりするのですが、
実行順序は保証されないものなのでしょうか。その場合、実行順序を決める方法はありますか?
#その他
根本的な処理フローがおかしい場合は、その旨指摘いただけるとありがたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/08 14:23
2019/03/09 04:48
2019/04/14 10:44