我在这里讨论的课程来自Picasso Lib for Android。 我在这个函数中有一个名为“ImageName”的变量。 但是我似乎无法弄清楚如何将参数传递给函数来更改变量名称。我已经尝试过扩展Target类,但我似乎仍然遇到错误而且我还不够先进,无法知道我做错了什么。
public interface TargetImageName extends Target
{
public void TargetImageName(String ImageName);
@Override
void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from);
@Override
void onBitmapFailed(Drawable errorDrawable);
@Override
void onPrepareLoad(Drawable placeHolderDrawable);
}
private TargetImageName target2 = new TargetImageName() {
String name;
@Override
public void TargetImageName(String ImageName) {
name = ImageName;
}
@Override
public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from) {
new Thread(new Runnable() {
@Override
public void run() {
File file = new File(
Environment.getExternalStorageDirectory().getPath()
+ name);//+ "/saved.jpg");
try {
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG,100,ostream);
ostream.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {}
};
//同时我还有什么......
int mode4 = Activity.MODE_PRIVATE;
SharedPreferences data = getSharedPreferences("data", mode4);
Integer coins = data.getInt("coins", 0);
String coinsString = coins.toString();
TextView coinView = (TextView) findViewById(R.id.coins);
coinView.setText(coinsString);
答案 0 :(得分:5)
您不能将任何内容传递给run()
,因为它不需要参数。你应该做的只是扩展Runnable
并通过构造函数传递你需要的任何东西:
public class MyRunnable implements Runnable {
protected Integer mFoo;
public MyRunnable(Integer foo) {
mFoo = foo;
}
@Override
public void run() {
// access mFoo when you need it
...
}
}
然后
...
new Thread(new MyRunnable(...)) {
...
答案 1 :(得分:0)
创建一个实现Target的类。
而不是另一个接口public class TargetImageName implements Target
{
String name;
public TargetImageName(String ImageName) {
name = ImageName;
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
...}
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
...}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
...}
}
现在创建一个对象并将其作为Picasso
回调对象传递
Picasso.with(getActivity()).load(<url>).into(new TargetImageName(<parameter>));