0

私は課題としてこのプログラムに取り組んでおり、この質問に答えようとしてきました。

Bundle data = getIntent().getExtras();

しかし、それは間違っています!以下のコードと以下の質問が、私をこの答えに導くものです。

import android.app.Activity;
import android.os.Bundle;

public class HelloWorld extends Activity {

    /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
   }
  }

Intentこのクラスが受け取るオブジェクトをフェッチする必要がありますHelloWorldActivity。そう、

getIntent().getExtras()データという名前の Bundle 型の新しい変数を宣言し、このクラスからの呼び出しの値を割り当てます。

それで、私は理解できない答えを探し求めました。

再び私は答えました:

Bundle data = getIntent().getExtras();

そしてそれは間違っています。誰かが私に何が欠けているのか説明してもらえますか? ありがとう

4

1 に答える 1

1

アクティビティを開始した受信インテントには、拡張データにバンドルが含まれていると想定しています。つまり、HelloWorldActivity は次のことを行う必要があります。

インテント sendIntent = newIntent(this, HelloWorld.class); // またはインテントを正しいアクティビティ バンドルに向ける他の方法 sendBundle = new Bundle(); // バンドルにデータを入れる例 // キーにはパッケージ プレフィックスを使用する必要があることに注意してください。sendBundle.putString("com.example.android.myapp.HELLOWORLD_KEY","Hello, World"); // など sendIntent.putExtras(sendBundle); startActivity(sendIntent);

これを行うと、HelloWorldで呼び出すことができます

バンドル データ = getIntent().getExtras();

これは sendBundle に入れたものを返します。

明示的なインテントを使用する場合でも、通常は発信インテントにアクションを追加します。これにより、受信インテントを別の場所でチェックして、正しいアクションを確認できます。また、何かをしようとする前に、Intent の拡張データが null でないことをテストします。

最後に、次のステートメントを覚えておいてください。

バンドル データ = getIntent().getExtras();

onCreate(); にある必要があります。

于 2013-02-24T03:49:40.807 に答える