:あなたはそれから呼び出すことによって、あなたの活動を起動することができ
/**
* Sample activity for passing parameters through a static constructor
* @author Chase Colburn
*/
public class ParameterizedActivity extends Activity {
private static final String INTENT_KEY_PARAM_A = "ParamA";
private static final String INTENT_KEY_PARAM_B = "ParamB";
/**
* Static constructor for starting an activity with supplied parameters
* @param context
* @param paramA
* @param paramB
*/
public static void startActivity(Context context, String paramA, String paramB) {
// Build extras with passed in parameters
Bundle extras = new Bundle();
extras.putString(INTENT_KEY_PARAM_A, paramA);
extras.putString(INTENT_KEY_PARAM_B, paramB);
// Create and start intent for this activity
Intent intent = new Intent(context, ParameterizedActivity.class);
intent.putExtras(extras);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Extract parameters
Bundle extras = getIntent().getExtras();
String paramA = extras.getString(INTENT_KEY_PARAM_A);
String paramB = extras.getString(INTENT_KEY_PARAM_B);
// Proceed as normal...
}
}
:たとえば
Intent
のパラメータ:別のアプリから起動されるアクティビティ(たとえば、Taskerプラグインの編集アクティビティ)を作成するときに、012を制御できない場合あなたの活動を開始する
コンストラクタでパラメータを受け入れるActivity
を作成することは可能です。それを使用するトリックは、しかし、それを直接使用することではなく、のような、適切な引数でsuper()
を呼び出すデフォルトコンストラクタで派生クラスを使用するのではありません。
class BaseActivity extends Activity
{
public BaseActivity(String param1, int param2)
{
// Do something with param1 and param2.
}
// Many more lines of awesomeness.
}
class DerivedActivity extends BaseActivity
{
public DerivedActivity()
{
super("param1", 42);
}
}
当然、あなたが生成する必要がある場合パラメータをBaseActivity()
に渡す場合は、ハードコードされた値を関数呼び出しで置き換えることができます。
putExtraを使用してパラメータを渡したくない理由は、そのデータを1つのアクティビティから別のアクティビティに渡すために使用します。 –