2014-11-10 3 views
0

У меня есть деятельность, которая анализирует json и отображает ее в list view. Теперь я хочу использовать это действие с навигационным ящиком.Как преобразовать эту активность во фрагмент?

Поэтому я хочу конвертировать это Activity в Fragment. Я пробовал себя и преобразовал часть активности, используя this one.

Я перевел весь процесс на On Activity Created. Но он показывает много ошибок, поэтому я удалил его.

Я не знаю, куда я пошел Неправильно. Поэтому, пожалуйста, направляйте меня. Спасибо заранее.

активность

public class FeedListActivity extends Activity { 

    private Toolbar mToolbar; 
    private NavigationDrawerFragment mNavigationDrawerFragment; 
    private static final String TAG = "FeedListActivity"; 

    private ListView NewsView; 
    private FeedListAdapter listAdapter; 
    private List<FeedItem> feedItems; 
    ProgressBarCircularIndetermininate progressBar; 
    private String URL_FEED = "http://www.amss.et/ins/ws.json"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_feed_list); 
     mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); 
     progressBar = (ProgressBarCircularIndetermininate) findViewById(R.id.progressBar); 
     progressBar.setVisibility(View.VISIBLE); 
     mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager().findFragmentById(R.id.fragment_drawer); 
     mNavigationDrawerFragment.setup(R.id.fragment_drawer, (DrawerLayout) findViewById(R.id.drawer), mToolbar); 
     feedItems = new ArrayList<FeedItem>(); 
     listAdapter = new FeedListAdapter(this, feedItems); 
     NewsView = (ListView) findViewById(R.id.feed_list); 
     NewsView.setAdapter(listAdapter); 

     // making fresh volley request and getting json 
     GsonRequest<FeedResult> gsonRequest = new GsonRequest<FeedResult>(URL_FEED, FeedResult.class, 
       new Response.Listener<FeedResult>() { 
        @Override 
        public void onResponse(FeedResult response) { 
         feedItems = response.getFeedItems(); 
         listAdapter.setData(feedItems); 
         listAdapter.notifyDataSetChanged(); 
         progressBar.setVisibility(View.INVISIBLE); 

        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Log.d(TAG, "Error: " + error.getMessage()); 
        } 
       }); 

     // Adding request to volley request queue 
     AppController.getInstance().addRequest(gsonRequest, TAG); 
     getimg(); 
    } 

// @Override protected int getLayoutResource() { 
//  return R.layout.activity_feed_list; 
// } 
    /** 
    * Parsing json reponse and passing the data to News view list adapter 
    */ 
    private void parseJsonFeed(JSONObject response) { 
     try { 
      JSONArray feedArray = response.getJSONArray("feed"); 

      for (int i = 0; i < feedArray.length(); i++) { 
       JSONObject feedObj = (JSONObject) feedArray.get(i); 

       FeedItem item = new FeedItem(); 
       item.setId(feedObj.getInt("id")); 
       item.setName(feedObj.getString("name")); 

       // Image might be null sometimes 
       String image = feedObj.isNull("image") ? null : feedObj 
         .getString("image"); 
       item.setImageUrl(image); 
       item.setStatus(feedObj.getString("status")); 
       item.setProfilePic(feedObj.getString("profilePic")); 
       item.setTimeStamp(feedObj.getString("timeStamp")); 

       // url might be null sometimes 
       String feedUrl = feedObj.isNull("url") ? null : feedObj 
         .getString("url"); 
       item.setUrl(feedUrl); 
       feedItems.add(item); 
      } 

      // notify data changes to list adapater 
      listAdapter.notifyDataSetChanged(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    public void getimg(){ 
     Log.d(TAG,"Entered"); 
     NewsView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
            long arg3) { 
       // TODO Auto-generated method stub 
       img(feedItems.get(arg2).getImageUrl()); 
      } 
     }); 
    } 

    public void img(String img){ 
     Toast.makeText(this, img, Toast.LENGTH_LONG).show(); 
    } 

    public void Search(View v){ 
     Intent intent = getIntent(); 
     finish(); 
     startActivity(intent); 
     Toast.makeText(this, "Searching", Toast.LENGTH_LONG).show(); 
    } 
} 

Старинное Фрагмент

public class FeedFragment extends Fragment { 

    public FeedFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_feed, container, false); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     ListView NewsView; 
     final FeedListAdapter listAdapter; 
     final List<FeedItem> feedItems; 
     final ProgressBarCircularIndetermininate progressBar; 
     String URL_FEED = "http://www.amss.et/ins/ws.json"; 
     View v = getView(); 
     progressBar = (ProgressBarCircularIndetermininate) v.findViewById(R.id.progressBar); 
     progressBar.setVisibility(View.VISIBLE); 

     feedItems = new ArrayList<FeedItem>(); 
     listAdapter = new FeedListAdapter(getActivity(), feedItems); 
     NewsView = (ListView) v.findViewById(R.id.feed_list); 
     NewsView.setAdapter(listAdapter); 
    } 

    public interface OnFragmentInteractionListener { 
     public void onFragmentInteraction(Uri uri); 
    } 

} 
+0

код intialization должен быть в onCreateView, – AAnkit

+1

@ Анки t Весь код в onCreate должен находиться в onCreateView? – user3467240

+0

Да, все должно быть в onCreateView(). –

ответ

1

Это, как вы должны сделать ...

public class FeedFragment extends Fragment { 

    private static final String TAG = "FeedListActivity"; 

    private ListView NewsView; 
    private FeedListAdapter listAdapter; 
    private List<FeedItem> feedItems; 
    private ProgressBarCircularIndetermininate progressBar; 
private String URL_FEED = "http://www.amss.et/ins/ws.json"; 

    public FeedFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View v = inflater.inflate(R.layout.fragment_feed, container, false); 

    progressBar = (ProgressBarCircularIndetermininate)v.findViewById(R.id.progressBar); 
    progressBar.setVisibility(View.VISIBLE); 
    feedItems = new ArrayList<FeedItem>(); 
    listAdapter = new FeedListAdapter(getActivity(), feedItems); 
    NewsView = (ListView) v.findViewById(R.id.feed_list); 
    NewsView.setAdapter(listAdapter); 

    // making fresh volley request and getting json 
    GsonRequest<FeedResult> gsonRequest = new GsonRequest<FeedResult>(URL_FEED, FeedResult.class, 
      new Response.Listener<FeedResult>() { 
       @Override 
       public void onResponse(FeedResult response) { 
        feedItems = response.getFeedItems(); 
        listAdapter.setData(feedItems); 
        listAdapter.notifyDataSetChanged(); 
        progressBar.setVisibility(View.INVISIBLE); 

       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Log.d(TAG, "Error: " + error.getMessage()); 
       } 
      }); 

    // Adding request to volley request queue 
    AppController.getInstance().addRequest(gsonRequest, TAG); 
    getimg(); 

     return v; 
} 

// @Override protected int getLayoutResource() { 
//  return R.layout.activity_feed_list; 
// } 
    /** 
    * Parsing json reponse and passing the data to News view list adapter 
    */ 
    private void parseJsonFeed(JSONObject response) { 
     try { 
      JSONArray feedArray = response.getJSONArray("feed"); 

      for (int i = 0; i < feedArray.length(); i++) { 
       JSONObject feedObj = (JSONObject) feedArray.get(i); 

       FeedItem item = new FeedItem(); 
       item.setId(feedObj.getInt("id")); 
       item.setName(feedObj.getString("name")); 

       // Image might be null sometimes 
       String image = feedObj.isNull("image") ? null : feedObj 
         .getString("image"); 
       item.setImageUrl(image); 
       item.setStatus(feedObj.getString("status")); 
       item.setProfilePic(feedObj.getString("profilePic")); 
       item.setTimeStamp(feedObj.getString("timeStamp")); 

       // url might be null sometimes 
       String feedUrl = feedObj.isNull("url") ? null : feedObj 
         .getString("url"); 
       item.setUrl(feedUrl); 
       feedItems.add(item); 
      } 
         // notify data changes to list adapater 
      listAdapter.notifyDataSetChanged(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    public void getimg(){ 
     Log.d(TAG,"Entered"); 
     NewsView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
            long arg3) { 
       // TODO Auto-generated method stub 
       img(feedItems.get(arg2).getImageUrl()); 
      } 
     }); 
    } 
    public void img(String img){ 
     Toast.makeText(getActivity(), img, Toast.LENGTH_LONG).show(); 
    }} 
Смежные вопросы