안드로이드 개발중 다음 문제 : "Only the original thread that created a view hierarchy can touch its views."문제는 이렇게 하면 해결됩니다.

2013. 8. 2. 11:26프로그래밍/Android

728x90
반응형

이번에 닌자와좀비들을 중국향으로 개발하면서 IAP모듈을 적용하는 과정에서 다음과 같은 

"Only the original thread that created a view hierarchy can touch its views." 에러가 발생되었습니다.

이럴 경우에는 다음과 같이 runOnUiThread(new Runnable() 로 묶어주시면 정상적으로 해결됩니다.


중국향이라 중국어는 어떤 내용인지를 정확하게 알수없지만 그래도 함수명과 변수들은 알수 있습니다.


private class doIAP extends AsyncTask<Void, Void, Void> 

{

@Override

protected Void doInBackground(Void... params) 

{

Looper.prepare();

/*

* ????点核心??方法,自?完成全部短代?程

* @param feeName ??点??符(自由定?,不可包含#?),不同??点此?必?不同

* @param activity Activity 不能?null

* @param listener SMSListener接口,?理?送成功和失?的操作,不能?null

* @param feeCode 短代代?,?登?平台???品??信息?完整?制??的??点!!?用按平台上此??点的???用?!

* @param tip 短代提示?

* @param okInfo 短代?送成功的提示?

* @param isRepeat  是否可重???(true????点,false?硬??点)

* @return 返回是否已???

*/

runOnUiThread(new Runnable() 

{

@Override

public void run() {

String feeName = "gold_100";

SMS.checkFee(feeName, MyActivity.this, new SMSListener() 

{

public void smsOK(String feeName) {

//短代?送成功

Log.i("SMSListener", "???点"+feeName+"已??完成,??已打?.");

m_BillingResult = OK;

}

public void smsFail(String feeName, int errorCode) {

Log.e("SMSListener", "第一????点??失?!["+feeName+"] ???:"+errorCode);

m_BillingResult = FAIL;

}

public void smsCancel(String feeName, int errorCode) 

{

Log.e("SMSListener", "用?点?取消!??点:"+feeName+" ???:"+errorCode);

m_BillingResult = CANCEL;

}

}, "0111C001071101204~00000000", "??100金?("+feeName+"),点??定???送一?1元短信,不含信息?.", "?送成功!已成功?得100金?!",true);    

                    }});

Looper.loop();

return null;

}

protected void onPostExecute(Void result) 

{

}          

}





 

728x90
반응형