2010-07-27 112 views
0
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(); 
    } 
} 

圓不顯示..... 但是當我把DrawO()旁邊我可以將uri值從onActivityResult()傳遞給onClick()嗎?

mSurfaceHolder01.addCallback(EX10_04.this); 

它畫一個圓!

如果我想畫一個圓在onActivityResult事件

什麼shuld怎麼辦?

或者如果我可以將uri傳遞給onClick函數?

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); 
........ 
....... 
} 

回答

0

1)由於表面還沒有被創建,因此未繪製圓。嘗試是這樣的:

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)要通過URI簡單地聲明一個字段URI和onActivityResult和的onClick(其分配)檢查,如果不爲空,使用它,並使它無效

相關問題