- ダイアログを使用できます。
- アクティビティを開始するために使用しているインテントは、開始されるアクティビティにアクセスできるプリミティブ データを保持できます。次に、開始されたアクティビティに条件付きでコントロールを設定できます。結局、最初のアクティビティに結果を返すことができます。
指定されたモードでアクティビティを開始するためのコード スニペット (モード定数は以下で定義されています):
public class SettingsActivity extends Activity
{
public static final String EXTRA_MODE = "your_mode_extra_name";
public static final int MODE_AGE = 0;
public static final int MODE_GENDER = 1;
private static final int MODE_DEFAULT = MODE_AGE;
@Override
public void onCreate(Bundle savedInstance)
{
int mode = getIntent().getIntExtra(EXTRA_MODE, MODE_DEFAULT);
switch(mode)
{
case MODE_AGE:
setContentView(R.layout.age_mode_layout);
//TODO: find controls by ID and set their event handlers here
break;
case MODE_GENDER:
setContentView(R.layout.age_mode_gender);
//TODO: find controls by ID and set their event handlers here
break;
}
}
}
性別を返すコード スニペット:
public class SettingsActivity extends Activity
{
public static final String EXTRA_GENDER = "your_gender_extra_name";
public static final int GENDER_FEMALE = 0;
public static final int GENDER_MALE = 1;
private void returnGender(int gender)
{
setResult(RESULT_OK, new Intent().putExtra(EXTRA_GENDER, gender));
finish();
}
}
最後に設定アクティビティを表示し、結果を取得します。
public class MainActivity extends Activity
{
//actually we could use mode constants from SettingsActivity;
//just to show that generally this is separate constants set
private static final int ID_AGE = 0;
private static final int ID_GENDER = 1;
private void requestAge()
{
Intent intent = new Intent(getApplicationContext(), SettingsActivity.class);
intent.putExtra(SettingsActivity.EXTRA_MODE, SettingsActivity.MODE_AGE);
startActivityForResult(intent, ID_AGE);
}
private void requestGender()
{
Intent intent = new Intent(getApplicationContext(), SettingsActivity.class);
intent.putExtra(SettingsActivity.EXTRA_MODE, SettingsActivity.MODE_GENDER);
startActivityForResult(intent, ID_GENDER);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (resultCode != RESULT_OK)
return; //something went wrong
switch(requestCode)
{
case ID_GENDER:
int gender = data.getIntExtra(SettingsActivity.EXTRA_GENDER, -66666);
//you've got the gender, use it
break;
case ID_AGE:
//get age from the intent and use it
break;
}
}
}