2012-02-07 3 views
1

アクティビティのインテントをサーフェスビューを拡張するクラスに渡すにはどうすればよいですか?意図を送り出すアクティビティのインテントをサーフェスビューを拡張するクラスに渡しますか?

相続人のコードは:

btnCutOutter.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      //Send intent to cut image from user selection path 
      //See designCanvas.java for details 

      String optionSelected = "Yes"; 
      Intent myIntent = new Intent(view.getContext(), designCanvas.class); 
      myIntent.putExtra("id",optionSelected); 

     } 
    }); 

私は意図データを取得しよう:

public class designCanvas extends SurfaceView implements SurfaceHolder.Callback { 
//Create shape using Path 
    Path mPath = new Path(); 
    private drawThread _thread; 
    private ArrayList<GraphicObject> _graphics = new ArrayList<GraphicObject>(); 

    public designCanvas(Context context, AttributeSet attributes) { 
     super(context, attributes); 
     getHolder().addCallback(this); 
     setFocusable(true); 
     _thread = new drawThread(getHolder(), this); 
     String optionSelected = getIntent().getStringExtra("id"); 

             . . . 

私は日食で通知していますその:

The method getIntent() is undefined 

誰かが私にこういう指針を与えることができたらとても感謝します:)

多くのありがとうございます。

+1

を保持していますアクティビティのみでインテントをSurfaceViewに渡す必要があるのはなぜですか? – triggs

+0

SurfaceView内のコードの結果を制御したいので、インテントをSurface Viewに渡す必要があります。私の質問をさらに定義するために、クラスの1つがアクティビティを持たないことを念頭に置いて、あるクラスから別のクラスにデータを渡すにはどうすればよいですか。 – Odhran

答えて

1

アンドロイド内のビューはアクティビティ内に含まれているため、アクティビティはビュー(この場合はSurfaceView)への参照を持ちます。つまり、アクティビティでインテントデータを取得し、SurfaceViewに渡すデータにセッターを使用することです。

したがって、質問のようにSurfaceViewコールgetIntentを保持するアクティビティでは、 SurfaceViewのセッターなど。 mySurfaceView.setSomeValue(someValue)

はEDITあなたはそれが活動のthatsで呼び出す必要があるdesignCanvasクラスでgetIntent()を呼び出している

は、インテントが使用されているがSurfaceView

あなたの質問はあまり意味がありません
public SomeActivity extends Activity{ 

public void onCreate(Bundle b){ 
    super.onCreate(b); 

    //give that the constructor for your surface view has an attributeset i assume  
    //you are creating it in xml 
    designCanvas dc = findViewById(someid); 

    String s = getIntent(.getStringExtra("id"); 
    dc.setId(s); 

} 
+0

私はそれを試みました。意図を送信するためのコードはうまくいくようです。インテントを取得しようとすると、getIntent()を使用することができません.Eclipseの状態は未定義です。質問をより詳細に更新します。 – Odhran

+0

SurfaceViewを拡張するdesignCanvasクラスは、アクティビティ内に保持されません。独自の.javaファイル内の単なるパブリッククラスです。 しかし、私は、アクティビティ内でSurfaceViewを拡張するdesignCanvasクラスをカプセル化しようとしましたが、残念ながら私はどこで始めたのでしょうか。私がこれを行うと、eclipseはdesignCanvasを独自のクラスに移動します。したがって、私がアクセスする必要のあるコードとデータはまだ手の届かないところです。私はあなたの辛抱強さに感謝しています:) – Odhran

+0

@OdhranあなたはSurfaceViewからgetIntent()にアクセスしようとしています。 SurfaceViewにはそのメソッドがありません.Activeクラスの子孫だけが持っています。アクティビティでは、SuFraceViewをホストしているインテントからgetIntent()を呼び出してから、そのデータをSurfaceViewに渡す必要があります。 SurfaceViewはどんなインテントにもアクセスしようとしてはいけません。SurfaceViewはUIコンポーネントに過ぎず、インテントを扱うことはできません。 –

関連する問題