Я очень новичок в разработке Android, а также в Java. Я разработал приложение, которое получает URL-адрес изображения с сайта и захочет загрузить его в устройство, а позже я хотел бы включить пользователей, чтобы установить его в качестве обоев. однако, я столкнулся с проблемой при назначении события onclick на кнопку.
Как только я раскомментирую строку красным цветом, появится окно с сообщением о том, что приложение неожиданно остановилось. Может кто-нибудь, пожалуйста, помогите мне с этим?принудительное закрытие при назначении onclick на кнопку
private ImageView imView = null;
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
try {
/* Create a URL we want to load some xml-data from. */
URL url = new URL(xmlURL);
/* Get a SAXParser from the SAXPArserFactory. */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
/* Get the XMLReader of the SAXParser we created. */
XMLReader xr = sp.getXMLReader();
/* Create a new ContentHandler and apply it to the XML-Reader */
ExampleHandler myExampleHandler = new ExampleHandler();
xr.setContentHandler(myExampleHandler);
/* Parse the xml-data from our URL. */
xr.parse(new InputSource(url.openStream()));
/* Parsing has finished. */
/* Our ExampleHandler now provides the parsed data to us. */
ParsedExampleDataSet parsedExampleDataSet = myExampleHandler
.getParsedData();
/* Set the result to be displayed in our GUI. */
if (myExampleHandler.filenames != null) {
a = a + "\n" + myExampleHandler.filenames + ", by "
+ myExampleHandler.authors + "\nhits: "
+ myExampleHandler.hits + " downloads";
this.ed = myExampleHandler.thumbs;
this.imageURL = myExampleHandler.mediafiles;
}
} catch (Exception e) {
a = e.getMessage();
}
// get thumbnail
Context context = this.getBaseContext();
if (ed.length() != 0) {
Drawable image = ImageOperations(context, this.ed, "image.jpg");
ImageView imgView = new ImageView(context);
imgView = (ImageView) findViewById(R.id.image1);
imgView.setImageDrawable(image);
}
TextView tv = (TextView) findViewById(R.id.txt_name);
tv.setText(a);
Button bt3 = (Button) findViewById(R.id.get_imagebt);
//bt3.setOnClickListener(getImageBtnOnClick);
}
OnClickListener getImageBtnOnClick = new OnClickListener() {
public void onClick(View view) {
downloadFile(imageURL);
}
};
void downloadFile(String fileUrl) {
URL myFileUrl = null;
try {
myFileUrl = new URL(fileUrl);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) myFileUrl
.openConnection();
conn.setDoInput(true);
conn.connect();
int length = conn.getContentLength();
InputStream is = conn.getInputStream();
bmImg = BitmapFactory.decodeStream(is);
// this.imView.setImageBitmap(bmImg);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private Drawable ImageOperations(Context ctx, String url,
String saveFilename) {
try {
InputStream is = (InputStream) this.fetch(url);
Drawable d = Drawable.createFromStream(is, "src");
return d;
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public Object fetch(String address) throws MalformedURLException,
IOException {
URL url = new URL(address);
Object content = url.getContent();
return content;
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:id="@+id/viewgroup">
<ImageView android:id="@+id/image1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
<ImageView android:id="@+id/image2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
<TextView android:id="@+id/txt_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" />
<Button id="@+id/get_imagebt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="xxx Get an image"
android:layout_gravity="center" />
<ImageView id="@+id/imview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</LinearLayout>
Привет, вы можете найти дополнительную информацию с помощью logcat. Откройте командную строку (Start ... Run ... 'cmd') и перейдите в свой каталог Android SDK (если только он не находится в вашей среде PATH). Перейдите в папку инструментов и введите «adb.exe logcat». Затем запустите приложение и проверьте вывод в командной строке. Он будет генерировать исключение, и с этой детализацией проще сузить проблему. – keyboardP
Е/AndroidRuntime (711): Uncaught обработчик: нить Основного выхода из-за неперехваченные е xception Х/AndroidRuntime (711): java.lang.RuntimeException: Невозможно запустить активность Co mponentInfo {resonet.example.getImage/resonet. example.getImage.getImage}: java.la ng.NullPointerException – Lynnooi
Е/AndroidRuntime (711): в android.app.ActivityThread.performLaunchActiv Ity (ActivityThread.java:2268) E/AndroidRuntime (711): в андроида. app.ActivityThread.handleLaunchActivi ти (ActivityThread.java:2284) Е/AndroidRuntime (711): в android.app.ActivityThread.access $ 1800 (Activi tyThread.java:112) Х/AndroidRuntime (711): в андроиде .app.A ctivityThread $ H.handleMessage (Ac tivityThread.java:1692) – Lynnooi