2017-08-28 110 views
-1

我创建了一个新的项目选项卡式视图。我想在我的主屏幕上的三个布局第一家庭第二类第三最喜欢。我有代码的家庭活动这是片段活动的代码是在这里如何将数据从活动传递到片段类?

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

    public HomeFragment() { 

    } 



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


    } 
} 

和我有另一个活动,这是视频播放列表。我想在我的家庭片段页面中显示播放列表的活动,但我太困惑了,而且对于Android来说,我不知道该怎么做。

视频播放列表的代码在这里。我如何在我的homeFragment类中调用这段代码?我尝试了太多方法,但太困惑了。

代码是在这里,我想在我的家乡节

public ProgressBar nextBar; 

List<String> next_title; 
List title; 
List vid; 
List<String> next_vid; 
ArrayList<Videos> videos=new ArrayList<Videos>(); 
Videos video; 
ArrayList<Videos> toclear=new ArrayList<Videos>(); 
List<Videos> fav = new ArrayList<Videos>(); 
InterstitialAd mInterstitialAd; 
ListView listview; 
Toolbar toolbar,favourite; 
int menu_id; 
LinearLayout layout, no_fav; 
private HttpHandler parserVideo; 
String nextPageToken; 
String apiKey = "AIzaSyDD73ZAzcR6bXa1qOv8YZY3fFmNwfTPs48"; 
String url; 
Main_activity_adapter search; 
Main_activity_adapter adapter; 

String url_home= "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=15&playlistId=PLQGGrzFoybiOks7f2BReNzNwkRw3cN6RB&key="+apiKey+""; 



@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.video_sec); 
    nextBar = (ProgressBar) findViewById(R.id.nextProgress); 
    layout = (LinearLayout) findViewById(R.id.linlaHeaderProgress); 
    url = url_home; 
    listview = (ListView) findViewById(R.id.listview); 
    no_fav = (LinearLayout)findViewById(R.id.no_favourit); 
    no_fav.setVisibility(View.GONE); 


    parserVideo = new HttpHandler();  
    getVideosPlaylist videosplaylist = new getVideosPlaylist(); 
    videosplaylist.execute(); 



    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 


    listview.setOnScrollListener(this); 




} 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    final MenuItem myActionMenuItem = menu.findItem(R.id.action_search); 
    final SearchView searchView = (SearchView) myActionMenuItem.getActionView(); 
    final String toolbar_name = toolbar.getTitle().toString(); 
    MenuItemCompat.setOnActionExpandListener(myActionMenuItem, new MenuItemCompat.OnActionExpandListener() { 
     @Override 
     public boolean onMenuItemActionExpand(MenuItem item) { 
      return true; 
     } 

     @Override 
     public boolean onMenuItemActionCollapse(MenuItem item) { 
      updateList(); 
      return true; 
     } 
    }); 
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String s) { 

      if (!s.isEmpty()) { 
       setSearch(); 
       search.getFilter().filter(s); 


      } 
      return false; 
     } 
    }); 

    return true; 
}// end of toolbar control 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    int id = item.getItemId(); 

    return super.onOptionsItemSelected(item); 
} 
public void updateList(){ 

    adapter = new Main_activity_adapter(this, videos, false); 

    listview.setAdapter(adapter); 

    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 



               Videos v = (Videos) adapter.getItemAtPosition(arg2); 
               Intent n = new Intent(Videos_activity.this, PlayingVideo.class); 
               n.putExtra("vid", v.getVid().toString()); 
               n.putExtra("title", v.getTitle().toString()); 
               startActivity(n); 

             } 
            } 

    ); 
} 

JSONObject jp_obj; 
JSONArray jar_array; 

@Override 
public void onScrollStateChanged(AbsListView view, int scrollState) { 

} 

@Override 
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
    String toolbar_check = toolbar.getTitle().toString(); 

    switch(view.getId()){ 
     case R.id.listview: 
      final int lastItem = firstVisibleItem + visibleItemCount; 
      if (lastItem == totalItemCount) { 
       if(toolbar_check!="Favourites") { 
        OnScrollList onscroll = new OnScrollList(); 
        onscroll.execute(); 
       } 
      } 

    } 
} 


class getVideosPlaylist extends AsyncTask<String, String, String> { 


    @Override 
    protected String doInBackground(String... params) { 

     jp_obj = parserVideo.getJsonFromYoutube(url); 

     try { 
      if (jp_obj.has("nextPageToken")) { 
       nextPageToken = jp_obj.getString("nextPageToken"); 

      } 
      jar_array = new JSONArray(jp_obj.getString("items")); 

      if(jp_obj != null) { 
       JSONObject c = jar_array.getJSONObject(0); 
       String json_check = c.getJSONObject("snippet").getString("title"); 
       if (json_check == null) { 

       } else { 
        title = new ArrayList<String>(jar_array.length()); 
        vid = new ArrayList<>(jar_array.length()); 
        for (int j = 0; j < jar_array.length(); j++) { 
         c = jar_array.getJSONObject(j); 
         String str = c.getJSONObject("snippet").getString("title"); 
         str = new String(str.replaceAll("\\['\\]", "")); 
         String link = c.getJSONObject("snippet").getJSONObject("resourceId").getString("videoId"); 
         video = new Videos(str, link); 
         videos.add(video); 
        } 
       } 

      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 
    @Override 
    protected void onCancelled(){ 
     super.onCancelled(); 
    } 
    @Override 
    protected void onPreExecute() { 

     layout.setVisibility(View.VISIBLE); 
     super.onPreExecute(); 
    } 

    @Override 
    protected void onPostExecute(String s) { 
     updateList(); 
     layout.setVisibility(View.GONE); 
     cancel(true); 
     super.onPostExecute(s); 

    } 
} 
class OnScrollList extends AsyncTask<String,String,String>{ 


    @Override 
    protected String doInBackground(String... params) { 
     if (nextPageToken!=null){ 
      String nextPage = "&pageToken="+nextPageToken+""; 

      JSONObject next = parserVideo.getJsonFromYoutube(url+nextPage); 

      try { 

       JSONArray array = new JSONArray(next.getString("items")); 
       if (next != null) { 
        JSONObject c = array.getJSONObject(0); 
        String json_check = c.getJSONObject("snippet").getString("title"); 
        if (json_check == null) { 

        } else { 
         next_title = new ArrayList<String>(array.length()); 
         next_vid = new ArrayList<String>((array.length())); 
         for (int j = 0; j < array.length(); j++) { 
          c = array.getJSONObject(j); 
          String str = c.getJSONObject("snippet").getString("title"); 
          str = new String(str.replaceAll("\'", "")); 
          next_title.add(str); 
          String nextLink = c.getJSONObject("snippet").getJSONObject("resourceId").getString("videoId"); 
          next_vid.add(nextLink); 
          video = new Videos(str, nextLink); 
          toclear.add(video); 
         } 
        } 


       }if (next.has("nextPageToken")){ 
        nextPageToken = next.getString("nextPageToken"); 
       }else if(!next.has("nextPageToken")){ 
        nextPageToken = null;} 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

     } 
     return null; 
    } 
    @Override 
    protected void onCancelled(){ 
     super.onCancelled(); 
    } 

    @Override 
    protected void onPostExecute(String s) { 
     videos.addAll(toclear); 
     adapter.notifyDataSetChanged(); 
     nextBar.setVisibility(View.GONE); 
     toclear.clear(); 
     cancel(true); 
     super.onPostExecute(s); 
    } 

    @Override 
    protected void onPreExecute() { 
     nextBar.setVisibility(View.VISIBLE); 
     super.onPreExecute(); 
    } 
} 
public void setSearch() 
{ 
    search = new Main_activity_adapter(Videos_activity.this, videos, true); 
    listview.setAdapter(search); 
    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 


               Videos v = (Videos)search.getItemAtPosition(arg2); 
               Intent n = new Intent(Videos_activity.this, PlayingVideo.class); 
               n.putExtra("vid", v.getVid().toString()); 
               n.putExtra("title", v.getTitle().toString()); 
               startActivity(n); 

             } 
            } 

    ); 
} 

public void favouritList(){ 
    Main_activity_adapter favourit_adapter = new Main_activity_adapter(this, videos, false); 
    listview.setAdapter(favourit_adapter); 
    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 


              Videos v = (Videos) adapter.getItemAtPosition(arg2); 
              Intent n = new Intent(Videos_activity.this, PlayingVideo.class); 
              n.putExtra("vid", v.getVid().toString()); 
              n.putExtra("title", v.getTitle().toString()); 
              startActivity(n); 
             } 
            } 

    ); 
} 
+0

创建一个方法并直接调用它m活动 –

+0

我如何创建方法请给我一点点主意 –

+0

只是一个公共方法,并通过片段引用直接访问它 –

回答

0

首先要实现,你要明白,活动包含片段,而不是相反。因此,为了使你的想法变成现实的一种方法是使你的活动包含三个片段:

  • 1)家庭
  • 2)范畴
  • 3)最喜欢的

从活动发送数据通常使用Bundle对象来分割片段。 然后创建片段的实例,并通过setArguments(yourBundle)方法将包放到那里。

这是主要想法,如果你想要的细节,然后阅读官方文件,并使用SOF搜索。

0

定义,然后在FragmentActivitypublic static String test="";变量得到它像String test1=ActivityName.test;现在你有test价值为test1

0

使用Bundle

Fragment fragment = new YourFragment(); 
Bundle bundle = new Bundle(); 
bundle.putString("yourArg","yourType"); //this could be String, int, float,etc 
fragment.setArguments(bundle); 
getSupportFragmentManager().beginTransaction().replace(R.id.yourContainer,fragment).commit(); 

,并在片段的onCreateView

Bundle bundle = getArguments();