开发者

Can i pass uri value from onActivityResult() to onClick()?

public void onCreate(Bundle savedInstanceState)
{
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  mSurfaceView01 = (SurfaceView) findViewById(R.id.mSurfaceView1); 
  mSurfaceHolder01 = mSurfaceView01.getHolder();
  mSurfaceHolder01.addCallback(EX10_04.this);

  mButton02 = (Button)findViewById(R.id.buttonObj);
  mButton02.setOnClickListener( new Button.OnClickListener(){
    public void onClick(View arg0) {
        Intent intent = new Intent( Intent.ACTION_GET_CONTENT );
        intent.setType("audio/*");          
        Intent destIntent = Intent.createChooser( intent, "select audio" ); //pick up an audio file
        startActivityForResult( destIntent, 0 );
    }
  });
 }

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if ( resultCode == RESULT_OK )
{

    Uri uri = data.getData();
    if( uri != null )
    {  
      DrawO();//It will draw a circle
    }
    else
    {
      e.printStackTrace();
    }
}

The circle not show..... but when i put the DrawO() next to

  mSurfaceHolder01.addCallback(EX10_04.this);

It draw a circle !

if i want to draw a circle in the onActivityResult event

what shuld i do ?

or if i can pa开发者_运维问答ss uri to onClick function ?

public void DrawO()
{

Canvas mCanvas01 = mSurfaceHolder01.lockCanvas(null);
mCanvas01.drawColor(getResources().getColor(R.drawable.white)); 
Paint mPaint01 = new Paint();
mPaint01.setStyle(Paint.Style.FILL);
mPaint01.setColor(getResources().getColor(R.drawable.red));
mPaint01.setStrokeWidth(1.0F);
........
.......
}


1) The circle is not drawn because the surface is not created yet. Try something like this:

    boolean needDrawing = false;

    public void onResume() {
       if (needDrawing) {
           Draw0();
           needDrawing = false;
       }
       ...
    }

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if ( resultCode == RESULT_OK )
{

    Uri uri = data.getData();
    if( uri != null )
    {  
     needDrawing = true;//It asks to draw a circle
    }
    else
    {
      e.printStackTrace();
    }
}

2) To pass the URI simply declare a field URI and assign it in onActivityResult and in onClick() check if not null, use it and invalidate it

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜