2012-02-07 55 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

相关问题