我有一个从here借用的类,它从URL加载和映像。我试图通过从onClickListener调用它来使用该类(如果这是有道理的)但我不知道如何调用该类并显示结果。现在我只是使用静态URL,但最终我将是动态的。
MainActivity Java中的OnclickListerner:
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){
showImage go = new showImage();
}
});
这是我的showImage类:
package com.flash_tattoo;
public class showImage extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fullimage);
ImageView imgView =(ImageView)findViewById(R.id.ImageView01);
String url = null;
Drawable drawable = LoadImageFromWebOperations("http://www.androidpeople.com/wp-content/uploads/2010/03/android.png");
imgView.setImageDrawable(drawable);
}
private Drawable LoadImageFromWebOperations(String url) {
try {
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
} catch (Exception e) {
System.out.println("Exc="+e);
return null;
}
}
}
我是否需要调用新布局然后将showImage对象附加到它?任何帮助都会很棒。在此先感谢。
答案 0 :(得分:1)
无需调用新布局,您可以在布局中放置一个按钮和一个ImageView,并按照您的设置设置图像。您的代码工作正常我已经检查过了。希望您可以在AndroidManifiest文件中给出Permission。
答案 1 :(得分:0)
可能的解决方案之一: 1)创建AsyncTask以下载图像; 2)使用回调通知下载结果; 3)在回调中设置你的图像。
请注意,如果你想设置的图像不是来自UI线程,你应该使用runOnUiThread
答案 2 :(得分:0)
首先,Java命名约定将类名称大写,这允许任何阅读代码的人立即知道什么是什么。请重命名showImage
课程。
其次,这将导致在UI线程中发生长时间运行的操作,最好使用AsyncTask - 请参阅Painless Threading上的这篇文章 - 或带有处理程序的新线程。 UI线程上的长时间运行操作将阻止任何输入处理程序事件及时处理,并可能导致应用程序无响应,尤其是移动连接速度较慢时。考虑添加一个进度条或某种方法,让用户知道应用程序在等待时仍在执行某些操作。
要回答原始问题,showImage
似乎是Activity
。这意味着在侦听器内部您不需要创建新的showImage
对象,而是触发Intent
来查看Activity
。假设你有正确的布局文件,我没有看到任何在这里不起作用的东西。
您似乎还有一个未使用的变量,不需要String url = null;
。
编辑:您也不应该使用System.out.println()
,尽管它会有所需的结果。在Android中登录的标准方法是使用LogCat系统。
正如suri所提到的,没有必要使用全新的Activity
来显示您的图像。如果您将showImage
类函数移动到第一个Activity
并将ImageView
添加到第一个布局,则可以将图像加载到与按钮相同的Activity
。< / p>