2011-07-10 4 views
0

もう一つの初心者アンドロイドの質問...Androidの意図はデータをアクティビティに渡します - これは正しいですか?

私は、introductionというアクティビティにImageViewを持っています。フライングジェスチャーに応じてこのImageViewの画像を変更したいと思います。情事の検出が正常に動作している、私はそれは原始的であるが、文字列「左」または「右」は情事ジェスチャにRaiseIntentに渡され

private void RaiseIntent(String direction) 
    { 
     Intent intent = new Intent(DemoApp.getAppContext(), Introduction.class); 
     intent.putExtra("direction", direction); 
     String category = DemoApp.getAppContext().getString(R.string.introduction_imageview_fling); 
     intent.addCategory(category); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

     DemoApp.getAppContext().startActivity(intent); 
    } 

を呼び出し

public class FlingGestureListener extends GestureDetector.SimpleOnGestureListener 

を持っています。

概要は、ImageViewがそのビュー内に座っているアクティビティです。私が持っているこの活動のためのアプリマニフェストで

:だから

<activity android:name=".Activities.Introduction"> 
     <intent-filter> 
       <category android:name="@string/introduction_imageview_fling"/> 
     </intent-filter> 
    </activity> 

、導入活動で、私は今、履歴書に、

getIntent 

を呼び出すことができ、putExtraから方向性を引き出します。人生はいいです、私はImageViewに次に読み込む画像を教えてくれる価値に頼ることができます。

私の問題は、私のアンドロイドの知識がここに表示されることがあります、これは汚い感じです。

私はOnResumeのインテント自体をチェックして、カテゴリが@ string/introduction_imageview_flingであることを確認してから、データを引き出す必要があります。 onResumeは、onCreateが呼び出された後に、ジェスチャーがアクティビティの内側から消されるので、onCreateを呼び出されます。しかし、再び、それは私に汚れているように感じます!これは本当にSimpleOnGestureListenerのデータをアクティビティに戻すための最良の方法ですか?私は何か基本的なものを逃している?

おかげ

+0

このコードはすべてあなたのはじめのアクティビティにありますか、別のアクティビティにある画像を変更しようとしていますか? – Gregory

+0

imageViewは、同じ紹介アクティビティのビューにあります。インテントを呼び出すFlingGestureListenerは、別のクラスにあります。 – Jammin

+0

他のクラスがあなたのアクティビティを参照することができます(セッターなどを使用して)。アクティビティで "setBlablaImage"のように呼び出すと、imageView自体が変更されます。あなたの場合、インテントを使用するのは適切ではないようです。 – Gregory

答えて

0

はこれにフォローアップ私のコメントのためにあまりにも長い間だった、それが含まれており、答えるん:

[OK]を、ので、私はこれを解決しただけ

ImageViewOnTouchListener implements View.OnTouchListener 
両方をネストすることにより

および

FlingGestureListener extends GestureDetector.SimpleOnGestureListener 

同じ活性内である。そして、これは

のDemoAppは、アプリケーションファイルである
DemoApp.getAppContext().startActivity(intent); 

に並置として

startActivity(intent); 

を呼び出して、私は

public void onNewIntent(Intent intent) 
{ 

} 

とちょうどまでIntent.FLAG_ACTIVITY_SINGLE_TOPとワイヤーに意図フラグモードを変更することができコンテキストとシングルトン。これは大丈夫です、それは私が今期待しているように動作し、人生は良いです!

しかし、私はネストされたクラスを持っていて、私の初心者の気持ちが分かる限り、DRYに違反する可能性があります。別のクラスからFLAG_ACTIVITY_SINGLE_TOPを呼び出そうとすると、私は唯一の

FLAG_ACTIVITY_NEW_TASK 

が活動の外から呼び出すことができますエラーログで言われた、との活動は、スタックをオフに被爆されたかもしれないとして、それはほとんどの場合、理にかなっています、まったく始動したことはありません。しかし、私のここの例では、これがすべて1つのアクティビティで、クラスファイルを別々にするだけですが、これは本当にこれを解決する唯一の方法ですか?または、私は完全に間違った角度からこれを見ていますか?

もう一度おねがいします。

関連する問題