gpt4 book ai didi

java - 当您调用异步任务的方法时,应用程序退出

转载 作者:行者123 更新时间:2023-11-29 04:39:50 25 4
gpt4 key购买 nike

我有一个问题。我正在尝试创建 Activity 导致异步任务,并在执行调用的方法 adapterCreate() 类 Profile.class 之后创建适配器。有必要在方法的第一个参数中传输上下文。在这里,例如如果我在线上调用类中的方法,一切正常,如果调用上下文“this”。如果我从异步任务中调用,应用程序将退出。我不知道该怎么办。我希望得到你的帮助。谢谢!

Profile.class

public class Profile extends AppCompatActivity {



protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_application);

new ParseTask(this).execute();

}



public void adapterCreate(Activity context){

String[] str1 = {"mesages1", "messages2"};
String[] str2 = {"photo1", "photo2"};
String[] str3 = {"name1", "name2"};

adapter = new LazyAdapter(context, str1, str2, str3);
list.setAdapter(adapter);

}

}

ParseTask.class

public class ParseTask extends AsyncTask<Void, Void, String> {

HttpURLConnection urlConnection = null;
BufferedReader reader = null;
String resultJson = "";

Activity act;

public ParseTask (Activity context){
this.act = context;
}

@Override
protected String doInBackground(Void... params) {
try {
URL url = new URL("/friends.json");

urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();

InputStream inputStream = urlConnection.getInputStream();
StringBuffer buffer = new StringBuffer();

reader = new BufferedReader(new InputStreamReader(inputStream));

String line;
while ((line = reader.readLine()) != null) {
buffer.append(line);
}

resultJson = buffer.toString();

} catch (Exception e) {
e.printStackTrace();
}
return resultJson;
}

@Override
protected void onPostExecute(String strJson) {
super.onPostExecute(strJson);

new Profile().chatCreate();

}
}

LazyAdapter.class

public class LazyAdapter extends BaseAdapter {

private Activity activity;
private String[] messages;
private String[] photo;
private String[] name;
private static LayoutInflater inflater=null;
//public ImageLoader imageLoader;

public LazyAdapter(Activity a, String[] messages_c, String[] photo_c, String[] name_c) {
activity = a;
messages=messages_c;
photo = photo_c;
name = name_c;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//imageLoader=new ImageLoader(activity.getApplicationContext());
}

public int getCount() {
return name.length;
}

public Object getItem(int position) {
return position;
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null) vi = inflater.inflate(R.layout.listview_row, null);

TextView name_c = (TextView)vi.findViewById(R.id.name_c);
TextView content_c = (TextView)vi.findViewById(R.id.content_c);
ImageView image = (ImageView)vi.findViewById(R.id.image);
name_chat.setText(name[position]);
content_chat.setText(messages[position]);
return vi;
}
}

logcat 日志

09-24 16:49:10.821 7969-7969/package E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at package.Profile.chatCreate(Profile.java:645)
at package.ParseTask.onPostExecute(ParseTask.java:108)
at package.ParseTask.onPostExecute(ParseTask.java:21)
at android.os.AsyncTask.finish(AsyncTask.java:631)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

最佳答案

你绝对不能这样做:

    new Profile().chatCreate();

Profile是一个 Activity ,这是一个 Android 组件。您不能使用 new 自行实例化 Android 组件.只有 Android 框架可以实例化 Android 组件,因为它们需要有自己的 Context在使用之前进行设置。

如果你想在 Activity 上调用一个方法, 那么你需要使用 Activity 的一个实例已经由 Android 框架创建。

关于java - 当您调用异步任务的方法时,应用程序退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39679277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com