我正在这段代码中工作,我想用EditText编辑一个Url,当我按下带给我图像的按钮时。但是我遇到一个错误,说EditText发送的是空值。
public class MainActivity extends AppCompatActivity {
ImageView img;
Bitmap bitmap;
private Button btn;
EditText et_num;
String URLIMAGE = "https://www.avansys.edu.pe/sites/default/files/"+et_num+".png";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img = (ImageView) findViewById(R.id.img);
et_num = (EditText) findViewById(R.id.et_num);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new GetImageFromURL(img).execute(URLIMAGE);
}
});
}
public class GetImageFromURL extends AsyncTask<String, Void, Bitmap> {
ImageView imgV;
public GetImageFromURL(ImageView imgV) {
this.imgV = imgV;
}
@Override
protected Bitmap doInBackground(String... url) {
String urldisplay = url[0];
bitmap = null;
try {
InputStream srt = new java.net.URL(urldisplay).openStream();
bitmap = BitmapFactory.decodeStream(srt);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
imgV.setImageBitmap(bitmap);
}
}
}
但是我明白了:
W/System.err: java.io.FileNotFoundException: https://www.avansys.edu.pe/sites/default/files/null.png
有人知道我该如何解决吗?
答案 0 :(得分:0)
您在这里错了:
EditText et_num;
String URLIMAGE = "https://www.avansys.edu.pe/sites/default/files/"+et_num+".png";
更改为以下内容:
String URLIMAGE = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img = (ImageView) findViewById(R.id.img);
et_num = (EditText) findViewById(R.id.et_num);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
URLIMAGE = "https://www.avansys.edu.pe/sites/default/files/"+et_num.getText().toString()+".png";
new GetImageFromURL(img).execute(URLIMAGE);
}
});
}
已添加
请记住:您想随时获取textView的值,请检查nullPointerException。
if(!TextUtils.isEmpty(edt.getText().toString())){
// Doing something
}
答案 1 :(得分:0)
我在这里看到两件事是错误的。
首先,您要在初始化时对URLIMAGE
进行硬编码,这意味着此时et_num
变量是 并将其转换为String。由于为空,因此String表示为null
。
第二个问题是EditText#toString()
并不是从EditText实例获取文本的方式。您应该使用EditText#getText().toString()
。所以做两件事:
由于您仅在一个地方使用URLIMAGE
,因此只需将任务移到您的点击监听器即可。
使用et_num.getText()
而不是et_num
。
您的onClick()
代码应如下所示:
@Override
public void onClick(View v) {
String URLIMAGE = "https://www.avansys.edu.pe/sites/default/files/"+et_num.getText()+".png";
new GetImageFromURL(img).execute(URLIMAGE);
}
答案 2 :(得分:0)
1.Place String URLIMAGE; (在onCreate之前)
2。将代码放在btn.setOnClickListener
内,还需要从编辑文本中获取文本。
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
URLIMAGE = "https://www.avansys.edu.pe/sites/default/files/"+et_num.getText().toString()+".png";
new GetImageFromURL(img).execute(URLIMAGE);
}
});
答案 3 :(得分:0)
您试图做的可能是在EditText中获得价值。
首先,该结构将始终为您提供null,因为尚未声明et_num,因此在以下情况下它将始终为null。
EditText et_num;
String URLIMAGE = "https://www.avansys.edu.pe/sites/default/files/"+et_num+".png";
将URLIMAGE更改为String URLIMAGE = "https://www.avansys.edu.pe/sites/default/files/"
然后在OnClickListener中获取EditText的实际值并附加到URL
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = et_num.getText().toString();
new GetImageFromURL(img).execute(URLIMAGE + text + ".png");
}
});
答案 4 :(得分:0)
首先,et_num是一个Object(EditText),而不是文本。在初始化期间,URLIMAGE在初始化et_num之前会初始化,因此它为null。完全删除URLIMAGE并替换为:
new GetImageFromURL(img).execute(URLIMAGE);
与此:
String url = "https://www.avansys.edu.pe/sites/default/files/"+et_num.getText()+".png";
new GetImageFromURL(img).execute(url);
答案 5 :(得分:0)
将其放在按钮onClick()
的{{1}}方法中
btn
像这样
String URLIMAGE = "https://www.avansys.edu.pe/sites/default/files/"+et_num.getText().toString()+".png";