2012-02-07 56 views
1

如何將活動意圖傳遞給擴展surfaceview的類?將活動的意圖傳遞給擴展surfaceview的類?

繼承人的發送出去的意圖代碼:

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 2012-02-07 15:23:28

+0

我需要將意圖傳遞到Surface View,因爲我想控制SurfaceView內代碼的結果。爲了進一步定義我的問題,我將如何將數據從一個類傳遞到另一個類,記住其中一個類沒有活動。 – Odhran 2012-02-07 15:31:23

回答

1

在android中的任何視圖都包含在一個activity中,因此這個activity有一個對view的引用(在這種情況下是一個SurfaceView)。所以它只是一個在Activity中獲取意圖數據的問題,然後使用一個設置器來傳遞你想要傳遞給SurfaceView的數據。因此,在保存SurfaceView調用getIntent的Activity中,就像你在問題中一樣,然後調用一個在SurfaceView中的setter。 mySurfaceView.setSomeValue(someValue)

編輯

你在這方面需要在活動這就是被稱爲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 2012-02-07 16:06:35

+0

designCanvas類擴展SurfaceView不在活動中。它只是一個公開的類,在它自己的.java文件中。但是,我試圖封裝一個活動中擴展SurfaceView的designCanvas類,但不幸的是,我最終回到了開始大聲笑的地方。如果我這樣做,eclipse堅持將designCanvas移動到它自己的類中。所以我需要訪問的代碼和數據仍然遙遙無期。我真的很感激你的耐心觸發:) – Odhran 2012-02-07 16:48:43

+0

@Odhran你試圖從SurfaceView訪問getIntent()。 SurfaceView沒有這種方法 - 只有Activity類的後裔纔有它。您應該在Activity中調用getIntent() - 承載SufraceView的Activity,然後從intent中獲取數據,然後將其傳遞給SurfaceView。 SurfaceView不應該嘗試訪問任何意圖,SurfaceView只是一個UI組件,它在處理意圖方面沒有業務 - 有確切目的的活動。 – 2012-02-07 16:54:08

相關問題