2016-12-17 1 views
0

может кто-нибудь рассказать мне, почему я получаю ошибку Cannot resolve symbol в методах on create и on start на mRssFeed? Кстати, это только мой класс фрагмента rss-канала. Спасибо.не может разрешить символ при текстовом и rss-представлении

import android.support.v4.app.Fragment; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

import java.io.ByteArrayOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.net.HttpURLConnection; 
import java.net.URL; 

public class FeedFragmentPortrait extends android.support.v4.app.Fragment { 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.feed_fragment_portrait, container, false); 

    View rootView = inflater.inflate(R.layout.feed_fragment_portrait, container, false); 
    mRssFeed = (TextView) rootView.findViewById(R.id.rss_feed); 
    return rootView; 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    InputStream in = null; 
    try { 
     URL url = new URL("http://www.google.com/feed/main.xml"); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     in = conn.getInputStream(); 
     ByteArrayOutputStream out = new ByteArrayOutputStream(); 
     byte[] buffer = new byte[1024]; 
     for (int count; (count = in.read(buffer)) != -1;) { 
      out.write(buffer, 0, count); 
     } 
     byte[] response = out.toByteArray(); 
     String rssFeed = new String(response, "UTF-8"); 
     mRssFeed.setText(rssFeed); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     if (in != null) { 
      try { 
       in.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

}

ответ

0

удалить эту строку из oncreateView return inflater.inflate(R.layout.feed_fragment_portrait, container, false);

вы возвращающегося перед инициализацией mRssFeed

Вот почему система не может знать, что mRssFeed является

Редактировать

Кроме того, вы должны сделать все API вызовы в фоновом

@Override 
public void onStart(Intent intent, int startId) { 
    super.onStart(intent, startId); 

     new DownloadInfo().execute("http://example.com/xxx.php"); 
} 

и AsyncTask что-то вроде этого

class DownloadInfo extends AsyncTask<String, String, String> { 
    @Override 
    protected String doInBackground(String... url) { 
     // constants 
    InputStream in = null; 
    try { 

    HttpURLConnection conn = ((HttpURLConnection) new URL(url[0]).openConnection(); 
    in = conn.getInputStream(); 
    ByteArrayOutputStream out = new ByteArrayOutputStream(); 
    byte[] buffer = new byte[1024]; 
    for (int count; (count = in.read(buffer)) != -1;) { 
     out.write(buffer, 0, count); 
    } 
    byte[] response = out.toByteArray(); 
    return new String(response, "UTF-8"); 

} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    if (in != null) { 
     try { 
      in.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String result) { 

      if (result != null) { 
       mRssFeed.setText(rssFeed); 
      } 
    } 
+0

имеет смысл. сделали это, но все равно получите ту же ошибку –

+0

вы можете поделиться журналом ошибок? –

Смежные вопросы