私はAndroidの開発については非常に初心者です。
あるゲームの情報を表示するアクティビティを作成し、開始したいと思います。その情報を表示するには、gameIdが必要です。
このゲームIDをアクティビティに渡すにはどうすればよいでしょうか?ゲームIDは絶対に必要なので、IDを持っていないアクティビティは作成・開始したくありません。
アクティビティのコンストラクタが1つしかなく、パラメータも1つしかないような状態です。
どうすればいいのでしょうか?
ありがとうございます。
あなたのIDであるint
を新しいIntent
に入れます。
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
Bundle b = new Bundle();
b.putInt("key", 1); //Your id
intent.putExtras(b); //Put your id to your next Intent
startActivity(intent);
finish();
次に、新しい Activity
でその id を取得します。
Bundle b = getIntent().getExtras();
int value = -1; // or other values
if(b != null)
value = b.getInt("key");
アクティビティの呼び出しに使用するIntentに追加データを追加するだけです。
呼び出し側のアクティビティに:
Intent i = new Intent(this, TheNextActivity.class);
i.putExtra("id", id);
startActivity(i);
呼び出したアクティビティのonCreate()内では
Bundle b = getIntent().getExtras();
int id = b.getInt("id");
編集 : おっと、Charlie Sheenの方が早かったですね。
既存の回答(startActivity()
に渡されるIntent
にデータを渡す)は、この問題を解決するための通常の方法を示しています。他のアプリ(例えば、Taskerプラグインの編集アクティビティの1つ)によって起動されるアクティビティを作成しているため、Activity
を起動するIntent
を制御できないという奇妙なケースで使用できる別の解決策があります。
パラメータを持つコンストラクタを持つベースクラスの Activity
を作成し、次に値を持つベースクラスのコンストラクタを呼び出すデフォルトのコンストラクタを持つ派生クラスを以下のように作成することができます。
class BaseActivity extends Activity
{
public BaseActivity(String param)
{
// Do something with param
}
}
class DerivedActivity extends BaseActivity
{
public DerivedActivity()
{
super("parameter");
}
}
ベースクラスのコンストラクタに渡すパラメータを生成する必要がある場合は、ハードコードされた値を、渡すべき正しい値を返す関数呼び出しに置き換えるだけです。