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