0

私のアプリでは、WiFi 接続がない場合、AlertDialog で WiFi 接続をオンにし、WiFi 設定画面を呼び出します。戻るボタンを押すと、それが MainActivity の onResume() メソッドに入ると仮定します。このメソッドでは、ツイートをリロードする loadTweets メソッドを呼び出します。これは、あるアクティビティから別のアクティビティにホップするときに機能します。

WiFi 設定画面に戻ると、デバッガーは onResume メソッドに入り、loadTweets メソッドをループしますが、リロードされたツイートは表示されません。

ここでステップがありませんか?

onResume() メソッド:

public void onResume(){
    super.onResume();
    checkWifi();   
    loadTweets();
}

LoadTweets メソッド:

private ArrayList<Tweets> loadTweets(){
ArrayList<Tweets> tweets = new ArrayList<Tweets>();
try {
        HttpClient hc = new DefaultHttpClient();
        HttpGet get = new
        HttpGet("http://search.twitter.com/search.json?q=JobXXL_be&rpp=5");
        HttpResponse rp = hc.execute(get);
        if(rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
        {
                String result = EntityUtils.toString(rp.getEntity());
                JSONObject root = new JSONObject(result);
                JSONArray sessions = root.getJSONArray("results");
                for (int i = 0; i < sessions.length(); i++) {
                        JSONObject session = sessions.getJSONObject(i);
                        Tweets tweet = new Tweets();
                        tweet.setTweet(session.getString("text"));
                        tweet.setUser(session.getString("from_user"));
                        tweet.setDate(session.getString("created_at").substring(5,16));
                        tweets.add(tweet);
                }
        }
} catch (Exception e) {
        Log.e("TwitterFeedActivity", "Error loading JSON", e);
 }
 return tweets;
}

TweetListAdapter クラス:

private class TweetListAdaptor extends ArrayAdapter<Tweets> {
                private ArrayList<Tweets> tweets;
                public TweetListAdaptor(Context context, int textViewResourceId, ArrayList<Tweets> tweets) {
                         super(context, textViewResourceId, tweets);
                         this.tweets = loadTweets();
                }
                @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.tweetitem, null);
                        }
                        Tweets o = tweets.get(position);
                        TextView tt = (TextView) v.findViewById(R.id.TWEET_TEXT);
                        TextView bt = (TextView) v.findViewById(R.id.TWEET_SCREEN_NAME);
                        TextView date = (TextView) v.findViewById(R.id.TWEET_CREATED_AT);
                        tt.setText(o.getTweet());
                        bt.setText(o.getUser());
                        date.setText(o.getDate());
                        return v;
                }

                public void setTweets(ArrayList<Tweets> tweet){
                    this.tweets = tweet;
                }
            }
4

1 に答える 1

1

このコードには、ツイートの表示を扱っているものはありません。ツイートを取得するだけですが、表示しonResumeませんよね?アクティビティonCreateonStartメソッドが呼び出される間を移動すると、おそらくどこかにツイートが表示されます。

于 2011-05-09T14:52:03.057 に答える