Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓广播接收,意向有附加功能_Android_Broadcastreceiver_Flickr_Android Asynctask - Fatal编程技术网

Android 安卓广播接收,意向有附加功能

Android 安卓广播接收,意向有附加功能,android,broadcastreceiver,flickr,android-asynctask,Android,Broadcastreceiver,Flickr,Android Asynctask,我正在android上开发一个简单的应用程序,从ficklr下载图像并加载到ImageView中。我使用asyncTask和广播接收器来避免问题。当我尝试执行它时,我得到了一个JSON响应,onReceive中没有问题。但如果我尝试在onReceive中执行另一个加载flickr图像的方法(searchPhoto),则会出现以下错误: 01-19 22:24:25.914: E/AndroidRuntime(28284): FATAL EXCEPTION: main 01-19 22:24:25

我正在android上开发一个简单的应用程序,从ficklr下载图像并加载到ImageView中。我使用asyncTask和广播接收器来避免问题。当我尝试执行它时,我得到了一个JSON响应,onReceive中没有问题。但如果我尝试在onReceive中执行另一个加载flickr图像的方法(searchPhoto),则会出现以下错误:

01-19 22:24:25.914: E/AndroidRuntime(28284): FATAL EXCEPTION: main
01-19 22:24:25.914: E/AndroidRuntime(28284): java.lang.RuntimeException: Error receiving broadcast Intent { act=com.jalbacar.restapi.SEARCH (has extras) } in com.jalbacar.restapi.SearchActivity$1@46e94708
01-19 22:24:25.914: E/AndroidRuntime(28284):    at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:905)
01-19 22:24:25.914: E/AndroidRuntime(28284):    at android.os.Handler.handleCallback(Handler.java:587)
01-19 22:24:25.914: E/AndroidRuntime(28284):    at android.os.Handler.dispatchMessage(Handler.java:92)
01-19 22:24:25.914: E/AndroidRuntime(28284):    at android.os.Looper.loop(Looper.java:123)
01-19 22:24:25.914: E/AndroidRuntime(28284):    at android.app.ActivityThread.main(ActivityThread.java:4668)
01-19 22:24:25.914: E/AndroidRuntime(28284):    at java.lang.reflect.Method.invokeNative(Native Method)
01-19 22:24:25.914: E/AndroidRuntime(28284):    at java.lang.reflect.Method.invoke(Method.java:521)
01-19 22:24:25.914: E/AndroidRuntime(28284):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
01-19 22:24:25.914: E/AndroidRuntime(28284):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
01-19 22:24:25.914: E/AndroidRuntime(28284):    at dalvik.system.NativeStart.main(Native Method)
01-19 22:24:25.914: E/AndroidRuntime(28284): Caused by: java.lang.NullPointerException
01-19 22:24:25.914: E/AndroidRuntime(28284):    at    com.jalbacar.restapi.SearchActivity.searchPhoto(SearchActivity.java:89)
01-19 22:24:25.914: E/AndroidRuntime(28284):    at com.jalbacar.restapi.SearchActivity$1.onReceive(SearchActivity.java:110)
01-19 22:24:25.914: E/AndroidRuntime(28284):    at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:892)
搜索活动

package com.jalbacar.restapi;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.client.methods.HttpGet;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.jalbacar.restapi.RestTask;

public class SearchActivity extends Activity {

private static final String SEARCH_ACTION = "com.jalbacar.restapi.SEARCH";
private static final String SEARCH_URI = "http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key=xxxxxxxxxxxxxxxxxx&photoset_id=72157624057488617&format=json&jsoncallback=?";

private TextView result;
private ProgressDialog progress;
private Bitmap bmFlickr;
private ImageView imageFlickrPhoto;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setTitle("Activity");
    result = new TextView(this);
    setContentView(result);
    imageFlickrPhoto= (ImageView)findViewById(R.id.flickrPhoto);




  //Create the search request
    try{            

        HttpGet searchRequest = new HttpGet( new URI(SEARCH_URI));

        RestTask task = new RestTask(this,SEARCH_ACTION);
        task.execute(searchRequest);
        //Display progress to the user
        progress = ProgressDialog.show(this, "Searching", "Waiting For Results...", true);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
public void onResume() {
    super.onResume();
    registerReceiver(receiver, new IntentFilter(SEARCH_ACTION));
}

@Override
public void onPause() {
    super.onPause();
    unregisterReceiver(receiver);
}

public void searchPhoto(){
    URL FlickrPhotoUrl;
    try {
        FlickrPhotoUrl = new URL("http://farm5.staticflickr.com/4056/4659741303_4e994ba9aa_s.jpg");


        HttpURLConnection httpConnection = (HttpURLConnection) FlickrPhotoUrl.openConnection();
        httpConnection.setDoInput(true);

        httpConnection.connect();
        InputStream inputStream = httpConnection.getInputStream();
        bmFlickr = BitmapFactory.decodeStream(inputStream);
        if (bmFlickr != null){
               imageFlickrPhoto.setImageBitmap(bmFlickr);
        }
        if(progress != null) {
            progress.dismiss();
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }



}

//bradcast receiver
private BroadcastReceiver  receiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {

        //String response = intent.getStringExtra(RestTask.HTTP_RESPONSE);
        //result.setText(response);
        Toast.makeText(SearchActivity.this, "Galeria2", Toast.LENGTH_LONG).show();
        searchPhoto();
    }
};

最值得证明的是一个简单的问题或一些非常明显的问题,但我是一名初级Android开发人员。所以请大家耐心点。提前感谢

您在第89行获得了NPE。所以我认为这个问题在布局上。查看onCreate():

您将TextView设置为内容,但尝试查找ImageView。 所以,您只需要从Xml设置布局或执行类似操作

LinearLayout conatiner = new LinearLayout(this);
container.setOrientation(LinearLayout.VERTICAL);
container.addView(result = new TextView(this));
container.addView(result = new ImageView(this));
setContentView(container);
LinearLayout conatiner = new LinearLayout(this);
container.setOrientation(LinearLayout.VERTICAL);
container.addView(result = new TextView(this));
container.addView(result = new ImageView(this));
setContentView(container);