Передать намерение от действия классу, расширяющему представление поверхности? - PullRequest
1 голос
/ 07 февраля 2012

Как передать намерение из действия в класс, расширяющий представление поверхности?

Вот код, который отправляет намерение:

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");

                                         . . .

Eclipse сообщает мне, что:

The method getIntent() is undefined 

Я был бы очень признателен, если бы кто-то дал мне такое руководство по этому вопросу:)

Большое спасибо.

1 Ответ

1 голос
/ 07 февраля 2012

Любое представление в андроиде содержится внутри действия, поэтому у действия есть ссылка на представление (в данном случае SurfaceView). Таким образом, это просто вопрос получения данных о намерениях в Activity, а затем использования установщика для данных, которые вы хотите передать в SurfaceView

Итак, в Деятельности, которая содержит вызов SurfaceView getIntent, как у вас в вопросе, затем вызовите сеттер в SurfaceView, например. mySurfaceView.setSomeValue(someValue)

EDIT

Вы вызываете getIntent () в классе designCanvas, который необходимо вызвать в Activity, которая содержит 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);

}
...