2017-04-19 4 views
1

私は、インテントバンドルに特定の余分なものを必要とするアクティビティを作成しています。アクティビティに余分なものを渡すことを要求する

私はそのようなベストプラクティスが何であるか疑問に思っています。バンドルに特定の余分なものが含まれていない場合は、計画を開始しないでください。私もそのようなエラーを呼び出し元に通知したいと思います。

+1

でそれらを脅かす買収することができますか?あなただけ?開発チームのメンバーですか?あなたの直属のチームの外にいる人(一般の人も含めて、これが図書館のために配布されるのであれば)? – CommonsWare

+0

私の開発チームのメンバー – erik

+0

私は、余分なことは、呼び出されているアクティビティのパブリック静的列挙型であることを追加する必要があります..引数のためにenumモードを呼び出し、2つの値を持つと言う:AとB – erik

答えて

2

バンドルに特定の余分が含まれていない場合は、プランを開始しないでください。

onCreate()で余分を確認し、余分なものがない場合はfinish()に電話してください。

私はまた、発信者にそのようなエラーを通知したいと思います。

LogCatに何かを記録することができます。しかし、startActivity()というコードに例外をスローする手段はありません。

あなたはどちらかの活動にstaticヘルパーメソッドのいくつかのフォームを作成することを検討可能性がありますも先との通話行く

  • はちょうどあなたがそれを望むようにIntentを組み立て、または

  • 適しContext

とあなたのdeveloを奨励与えstartActivity()、 (ゴルフクラブで賄賂を贈り、ゴルフクラブで脅かすなど)。例えば、MyActivityに、持っている:

public static void start(Context ctxt, YourEnum value) { 
    Intent i=new Intent(ctxt, MyActivity.this).putExtra(EXTRA_THINGY, value); 

    ctxt.startActivity(i); 
} 

とあなたのチームのメンバーがあなたの活動を開始するMyActivity.start(this, MyEnum.AWESOME);を呼び出すことができます。 をプログラムで実行することはできません(たとえば、自分でIntentを作成するとコンパイル時エラーが発生することはありません)。例えばゴルフクラブは、一例であることを

ノートではなく、ベストプラクティス—、あなたのベーキングのスキルに応じて、あなたは/このアクティビティを使用するクッキー

+0

私の活動は次のようなものになるはずです: public static Intent IntentFactory(コンテキストコンテキスト、モードモード){ Intent intent = new Intent(); intent.setClass(context、MyNewActivity.class); intent.putExtra(Mode.class.getName()、mode.name()); return intent; } – erik

+0

@erik:申し訳ありませんが、あなたのコメントはgrueによって食べられました。私は 'YourActivity 'のようなものを提案しています。'start()'はあなたのアクティビティで、 'start()'は 'Context'(アクティビティを開始するため)、' enum'、そしてその他のものをエキストラとしてパッケージ化することができます。本当に複雑なエキストラセットについては、完全な 'IntentBuilder'を作成することができました - 私は適切な' Intent'を簡単に組み立てるために、CWAC-Cam2ライブラリを使ってそのルートを作成しました。 – CommonsWare

+0

あなたは私の理解を保証するために本当に素早く私のためにそれを嘲笑することができます、その活動家の助けを借りて、 "theirActivity" – erik

関連する問題