编辑网址-怎么做?

时间:2018-10-02 13:43:57

标签: android url

我正在这段代码中工作,我想用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

有人知道我该如何解决吗?

6 个答案:

答案 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()。所以做两件事:

  1. 由于您仅在一个地方使用URLIMAGE,因此只需将任务移到您的点击监听器即可。

  2. 使用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";