Принудительное закрытие при назначении нажатием кнопки - PullRequest
0 голосов
/ 21 декабря 2009

Я очень новичок в разработке для Android, а также в Java. Я разработал приложение, которое получает URL-адрес изображения с сайта, и хотел загрузить его на устройство, а позже я бы хотел, чтобы пользователи могли установить его в качестве обоев. Тем не менее, я столкнулся с проблемой при назначении события 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>

Ответы [ 2 ]

0 голосов
/ 21 декабря 2009

Код, который вы разместили, не показывает функцию downloadFile (); это поможет, если вы вставите его тоже. Кроме того, вы можете указать, какое исключение вы получаете (проверьте logcat)?

Проблема, о которой я могу подумать, может заключаться в отсутствии разрешения INTERNET в вашем файле манифеста.

0 голосов
/ 21 декабря 2009

Пожалуйста, проверьте catlog view на наличие сообщений об ошибках. Если это nullPointerException, то, возможно, кнопка с идентификатором «get_imagebt» не является частью файла, который вы задали в качестве представления содержимого? Не могли бы вы также опубликовать свой файл макета main.xml?
Привет! * * 1002

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...