2011-11-29 19 views
1

私には2つのクラスがあります。 Aは非アクティビティクラス、Bはアクティビティです。クラスAではアクティビティ以外のクラスのインテント(バンドル)から値を受け取る

は、私はクラスBに続いて

Intent intent = new Intent(xxxx.context, PDFRenderer.class);   
Bundle b = new Bundle(); 
b.putString("file", filePath); 
intent.putExtras(b); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
xxxxx.context.startActivity(intent); 

を宣言している、私はブール値を返すメソッドに入れています。私はこれをOnCreate()メソッドに入れました。

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    ama = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE); 
    manager = getPackageManager(); 
    RenderPeeDeeEff(getIntent().getStringExtra("file")); 

    i = new Intent(this, RenderPdf.class); 
    Bundle b = new Bundle(); 
    b.putBoolean("returnValue", pdfCrashed); 
    b.putString("pdfResult", pdfresult); 
    i.putExtras(b); 

    this.finish(); 
} 

は、どのように私はそれが活動ではありませんので、私はgetIntent()を使用できない場合でも、バッククラスAにバンドルbの値を渡すのですか?あなたのケースでは

答えて

0

は、私がSharedPreferenceを使用することを好む:)

+0

にバンドルを渡しますか?たとえばSharedPreferences prefs = this.getSharedPreferences(....など – user922770

0

は、あなただけのあなたにバンドルを渡すなどsetBundle(Bundle bundle)としてクラスAのメソッドを持っていませんでしたか?それは本当にAとBの関係に依存します。

+0

非アクティビティクラスは、アクティビティクラスを呼び出す、私のアプリケーションは、非アクティビティクラスに戻ります。私はA.クラスから値を渡すしようとしている非A.クラス – user922770

0

誰かがSharedPreferenceを提案しましたが、これは良いかもしれませんが、問題はあなたのClassAが(あなたのClassBがDialogのようなものであると仮定して)変更について通知されないことです。 ClassBのであり、そのようなあなたにClassAにBroadcastReceiverを登録するなどの選択肢は、あり、そして:あなたがSharedPreferenceのために行きたい場合は

i = new Intent(this, ACTION_CLASSB_FINISH); 
Bundle b = new Bundle(); 
b.putBoolean("returnValue", pdfCrashed); 
b.putString("pdfResult", pdfresult); 
i.putExtras(b); 
this.sendBroadcast(i); 

は、あなたがあまりにものreturnValueの変化に耳を傾けるListenerを登録することができます。必要に応じて登録を解除したり登録したりするには、ClassAでContextを取得する必要がある場合もあります。

0

クラスAでオーバーロードコンストラクタを使用できます。このコンストラクタでは、希望の値を取得できるBundleを使用できます。

0

startActivityForResultを使用します。

startActivityForResultの呼び出しに使用するコンテキスト内のアクティビティで、onActivityResultを実装します。 onActivityResultで

、返された意図から、私は非活動クラスでSharedPreferenceを使用することはできません

関連する問題