0

我對doInBackground有問題,asynctask,因爲我得到一個運行時錯誤的代碼專門對:運行時錯誤,當我檢查互聯網連接

ConnectivityManager connectivity = (ConnectivityManager) content.getSystemService(Context.CONNECTIVITY_SERVICE); 

((我想看看在inamgeview的圖像,但首先檢查該連接是否活躍這些操作在一個單獨的類執行不延伸活性)):

這是主要的活性:

public class TelevideoInternationalActivity extends Activity implements OnClickListener { 
/** Called when the activity is first created. */ 

String loc = "Nazionale"; 
static String home_page = "http://www.televideo.rai.it/televideo/pub/tt4web/Nazionale/16_9_page-100.png"; 
WorkAsyncIta wai = new WorkAsyncIta(); 
static String but = ""; 
Context content; 
/************DECLARES**************/ 
RelativeLayout relativeLayout1; 
ImageView imgpag; 
ProgressBar probar; 
/**********INITIALIZES**************/ 



@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    imgpag = (ImageView)findViewById (R.id.imgpag); 
    relativeLayout1 = (RelativeLayout) findViewById(R.id.RelativeLayout1); 
    probar = (ProgressBar) findViewById (R.id.probar); 

    wai.execute("http://www.televideo.rai.it/televideo/pub/tt4web/Nazionale/16_9_page-100.png"); 


} 

private class WorkAsyncIta extends AsyncTask<String, Void, Bitmap> 
{ 
    @Override 
    protected void onPreExecute() 
    { 

     probar.setVisibility(0); 
    } 
    @Override 
    protected Bitmap doInBackground(String... url) { 

     return ItaliaTelevideo.setHomePage(url[0], content); 


    } 
    @Override 
    protected void onPostExecute(Bitmap result) { 

     probar.setVisibility(1); 
     imgpag.setImageBitmap(result); 
     imgpag.setScaleType(ScaleType.FIT_XY); 
    } 
} 

} 

我已經改正了錯誤,但我現在看到這個調試視圖:

Thread [<17> AsyncTask #1] (Stepping) 
ThreadPoolExecutor$Worker.run() line: 672 
Thread.run() line: 1060 

,然後,如果我觸摸屏幕返回不要imageview顯示任何內容:

Thread [<3> main] (Suspended (exception IllegalStateException)) 
ViewRoot.handleMessage (Message) line: 1704 
ViewRoot (Handler). DispatchMessage (Message) line: 99 
Looper.loop() line: 123 
ActivityThread.main (String []) line: 4203 
Method.invokeNative (Object, Object [], Class, Class [], Class, int, boolean) line: not available [native method] 
Method.invoke (Object, Object ...) line: 521 
ZygoteInit MethodAndArgsCaller.run $() line: 791 
ZygoteInit.main (String []) line: 549 
NativeStart.main (String []) line: not available [native method] 

回答

1

你不能做任何GUI的東西在doInBackground(),您在調用功能可按其顯示敬酒消息。在AsyncTask上檢查documentation

+0

THX我糾正它 – user1001635

+0

我有添加下一個錯誤,我得到的樣子請 – user1001635

+0

嗯嘗試移動'WorkAsyncIta圍=新WorkAsyncIta();'入'的onCreate()'方法,只是在執行之前。事實上,你可以執行AsyncTask作爲新的WorkAsyncIta()。execute(「..」);'而不是定義'wai'並調用'wai.execute(「...」)' – Vladimir

1

content爲空,所以你會得到NullPointerException。你需要的上下文指派給content,你大概可以分配活動本身,就像這樣:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    content = this; // this is the important line 
    // The rest goes here... 
} 
+0

我有添加下一個錯誤,我得到的樣子請 – user1001635