我是Android新手并尝试创建我的第一个应用。它应该有一个ImageView以及两个按钮(后退和下一个)。当用户单击“下一步”按钮时,ImageView中的图像应替换为下一个图像(托管在我的服务器上)。文件的名称是1.jpg,2.jpg,3.jpg ...我使用以下代码,但有些东西不起作用。当Activity启动时,第一个图像被正确加载,但是当我单击Next按钮时没有任何反应(LogCat中也没有任何内容)。
public class slidesActivity extends Activity {
private ImageView imageView;
private int imageNumber = 1;
private String plakatiUrl = "http://plakati.bg/" +
Integer.toString(imageNumber) + ".jpg";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.slides);
final Drawable image = LoadImageFromWeb(plakatiUrl);
imageView = new ImageView(getBaseContext());
imageView = (ImageView) findViewById(R.id.imageView1);
imageView.setImageDrawable(image);
Button nextButton = (Button) findViewById(R.id.nextBtn);
nextButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
imageNumber++;
// Have to find why
imageView.setImageDrawable(image);
// is not working here
}
});
private Drawable LoadImageFromWeb(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;
}
}
}
我知道我必须在另一个线程中进行此操作,所以我没有得到ANR,但我仍然缺少一些东西。 请有人帮帮我!
答案 0 :(得分:0)
每次点击时,onClick()
方法都会重新加载相同的图片。您需要修改图像及其链接。将LoadImageFromWeb(String)
更改为
LoadImageFromWeb(String url, int imageNumber)
{
String plakatiUrl = url + Integer.toString(imageNumber) + ".jpg";
//...
}
并使用onClick()
方法调用它。
答案 1 :(得分:0)
这对我有用。不过你可以清理它。
public class TestAppActivity extends Activity {
private ImageView imageView;
private int imageNumber = 1;
private String plakatiUrl = "http://plakati.bg/";
private Drawable image = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.slides);
image = LoadImageFromWeb(generateUrlString(plakatiUrl, imageNumber));
imageView = new ImageView(getBaseContext());
imageView = (ImageView) findViewById(R.id.imageView1);
imageView.setImageDrawable(image);
Button nextButton = (Button) findViewById(R.id.nextBtn);
nextButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
imageNumber++;
image = LoadImageFromWeb(generateUrlString(plakatiUrl, imageNumber));
imageView.setImageDrawable(image);
}
});
}
private Drawable LoadImageFromWeb(String url) {
Drawable d = null;
InputStream is;
try {
is = (InputStream) new URL(url).getContent();
d = Drawable.createFromStream(is, "src name");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return d;
}
private String generateUrlString(String str, int n) {
return str + Integer.toString(n) + ".jpg";
}
}
另外,我建议使用Bitmap
代替Drawable
。并且,我注意到您将LoadImageFromWeb()
方法放在onCreate()
中。