Java asynctask中的android更新自定义视图
好的,我有一个从互联网上播放GIF的自定义视图。因此,我需要在我的视图中添加一个url来下载gif。但是我似乎无法在我的Java asynctask中的android更新自定义视图,java,android,view,android-asynctask,Java,Android,View,Android Asynctask,好的,我有一个从互联网上播放GIF的自定义视图。因此,我需要在我的视图中添加一个url来下载gif。但是我似乎无法在我的异步任务中更新我的自定义视图。我需要将url字符串添加到我的自定义视图gifView.setUrl()。它在onCreate类中工作,但在asynctask中为空 Oncreate类 GifView gifView; @Override public void onCreate(Bundle savedInstanceState) {
异步任务中更新我的自定义视图。我需要将url字符串添加到我的自定义视图gifView.setUrl()
。它在onCreate类中工作,但在asynctask中为空
Oncreate类
GifView gifView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
id = extras.getInt("id");
String idStr = String.valueOf(id);
String extension = extras.getString("extension");
if(extension.equals(".gif")){
setContentView(R.layout.activity_post_gif);
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
gifView = (GifView)findViewById(R.id.gifview);
titleStr = (TextView)findViewById(R.id.titleTXT);
postInfo = (TextView)findViewById(R.id.infoTXT);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
//the url
new getJsonInfoGif().execute("http://www.website.com/jsonApi");
}else{
异步任务
public class getJsonInfoGif extends AsyncTask<String, Void, String>{
@Override
protected void onPreExecute() {
progressDialog = new ProgressDialog(context);
progressDialog.setMessage("loading post...");
progressDialog.show();
}
@Override
protected String doInBackground(String... strings) {
return GET(strings[0]);
}
@Override
protected void onPostExecute(String res) {
try {
JSONObject jsonObject = new JSONObject("{'postinfo':[" + res + "]}");
JSONArray jsonArray = jsonObject.getJSONArray("postinfo");
JSONObject obj = jsonArray.getJSONObject(0);
//post title
titleStr.setText(obj.getString("name"));
//category and maker full name
//large image
JSONObject imgObj = obj.getJSONObject("thumbnails");
gifView.setUrl("http://www.website.com/my.gif");
} catch (JSONException e) {
e.printStackTrace();
}
if (progressDialog != null) {
progressDialog.dismiss();
}
}
}
这是url中的日志,如果我在活动中的asynctask中添加url,它将为null
11-07 14:41:58.821 5674-6076/svenmobile.tools.showcase D/DEBUG﹕ URLnull
我想知道的是问题是什么,如果可能的话如何解决。
提前感谢,Sven也许您在setUrl()
之前调用了init()
您可以在构造函数中向它传递url,或者public void init(最终上下文,字符串urlStr)抛出IOException{
我还建议您将所有网络代码移动到AsyncTask的doInBackground方法中的doInBackground
,返回GET(String)方法的是什么?为什么不简单地执行“returnstrings[0]”?因为我需要解析json数据
11-07 14:41:58.821 5674-6076/svenmobile.tools.showcase D/DEBUG﹕ URLnull