gpt4 book ai didi

android - java.lang.RuntimeException : Unable to start activity ComponentInfo 错误

转载 作者:行者123 更新时间:2023-11-29 22:16:24 28 4
gpt4 key购买 nike

我正在尝试编写高音扬声器的代码,但我遇到了编译错误。

我不会忘记将我的 Activity 添加到 list 中。

这是 Activity 代码:

package fr.enstb.tp2;

import java.net.URL;
import java.util.ArrayList;

import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class TweetsActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

ArrayList<Tweet> tweets = getTweets("android", 1);

ListView listView = (ListView) findViewById(R.id.ListViewId);
listView.setAdapter(new UserItemAdapter(this, R.layout.tweets_layout, tweets));
}

public class UserItemAdapter extends ArrayAdapter<Tweet> {
private ArrayList<Tweet> tweets;

public UserItemAdapter(Context context, int textViewResourceId, ArrayList<Tweet> tweets) {
super(context, textViewResourceId, tweets);
this.tweets = tweets;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.tweets_layout, null);
}

Tweet tweet = tweets.get(position);
if (tweet != null) {
TextView username = (TextView) v.findViewById(R.id.username);
TextView message = (TextView) v.findViewById(R.id.message);
ImageView image = (ImageView) v.findViewById(R.id.avatar);

if (username != null) {
username.setText(tweet.username);
}

if(message != null) {
message.setText(tweet.message);
}

if(image != null) {
image.setImageBitmap(getBitmap(tweet.image_url));
}
}
return v;
}
}

public Bitmap getBitmap(String bitmapUrl) {
try {
URL url = new URL(bitmapUrl);
return BitmapFactory.decodeStream(url.openConnection() .getInputStream());
}
catch(Exception ex) {return null;}
}

public ArrayList<Tweet> getTweets(String searchTerm, int page) {
String searchUrl = "http://search.twitter.com/search.json?q=@"
+ searchTerm + "&rpp=100&page=" + page;

ArrayList<Tweet> tweets = new ArrayList<Tweet>();

HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(searchUrl);

ResponseHandler<String> responseHandler = new BasicResponseHandler();

String responseBody = null;
try{
responseBody = client.execute(get, responseHandler);
}catch(Exception ex) {
ex.printStackTrace();
}

JSONObject jsonObject = null;
JSONParser parser=new JSONParser();

try {
Object obj = parser.parse(responseBody);
jsonObject=(JSONObject)obj;

}catch(Exception ex){
Log.v("TEST","Exception: " + ex.getMessage());
}

JSONArray arr = null;

try {
Object j = jsonObject.get("results");
arr = (JSONArray)j;
}catch(Exception ex){
Log.v("TEST","Exception: " + ex.getMessage());
}

for(Object t : arr) {
Tweet tweet = new Tweet(
((JSONObject)t).get("from_user").toString(),
((JSONObject)t).get("text").toString(),
((JSONObject)t).get("profile_image_url").toString()
);
tweets.add(tweet);
}

return tweets;
}

public class Tweet {
public String username;
public String message;
public String image_url;

public Tweet(String username, String message, String url) {
this.username = username;
this.message = message;
this.image_url = url;
}
}
}

这是日志跟踪:

: E/AndroidRuntime(884): FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{fr.enstb.tp2/fr.enstb.tp2.TweetsActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
at android.app.ActivityThread.startActivityNow(ActivityThread.java:1796)
at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:682)
at android.widget.TabHost.setCurrentTab(TabHost.java:346)
at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:150)
at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:540)
at android.view.View.performClick(View.java:3460)
at android.view.View$PerformClick.run(View.java:13955)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4340)
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:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at fr.enstb.tp2.TweetsActivity.getTweets(TweetsActivity.java:126)
at fr.enstb.tp2.TweetsActivity.onCreate(TweetsActivity.java:36)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
... 18 more

感谢您的帮助!

最佳答案

根据堆栈跟踪,您在 getTweets() 中的 arr 变量必须为 null,因为您在这一行得到 NullPointerException:for(Object t : arr)

使用调试器单步调试代码,看看您从服务调用中得到了什么。

关于android - java.lang.RuntimeException : Unable to start activity ComponentInfo 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8346228/

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