2017-08-28 2 views
-1

Ich habe eine neue Projekt-Tabbed-Ansicht erstellt. Ich möchte drei Layout auf meinem Hauptbildschirm 1. Home 2. Kategorie 3. Favorit. Ich habe Code of Home-Aktivität, die das Codefragment Aktivität ist hierWie übergebe ich Daten von der Aktivität zur Fragmentklasse?

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); 


    } 
} 

ist, und ich habe eine andere Tätigkeit, die Video-Playlist ist. Ich möchte die Playlist-Aktivität auf meiner Home-Fragment-Seite anzeigen, aber ich bin zu verwirrt und neu für Android. Ich habe keine Ahnung, was ich tun soll.

Der Code der Video-Playlist ist hier. Wie kann ich diesen Code in meiner HomeFragment-Klasse aufrufen? Ich habe zu viele Wege ausprobiert, bin aber zu verwirrt.

-Code ist hier, die ich

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

Erstellen Sie eine Methode und rufen Sie sie direkt an m Aktivität –

+0

Wie kann ich Methode pls erstellen geben Sie mir eine kleine Idee –

+0

nur eine öffentliche Methode, und greifen Sie direkt über Fragment Referenz –

Antwort

0

Vor allem in meinem Heimat Abschnitt implementieren möchten, müssen Sie diese Aktivität enthält Fragmente verstehen, nicht umgekehrt. So ein Weg, um Ihre Idee wahr zu machen ist Ihre Aktivität enthält drei Fragmente zu machen:

  • 1) Heim
  • 2) Kategorie
  • 3) Liebling

Um Daten aus Aktivität zu senden zu fragmentieren, verwenden Sie normalerweise das Bundle-Objekt. Dann erstellen Sie die Instanz des Fragments und setzen Sie das Paket dort mit der Methode setArguments (yourBundle).

Es ist die Hauptidee, wenn Sie Details möchten, dann lesen Sie offizielle Dokumentation und verwenden Sie die Suche auf SOF.

0

definieren Variable wie public static String test=""; in Activity dann in Fragment es wie String test1=ActivityName.test; bekommen Sie Wert von test haben in test1

0

ein verwenden 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(); 

und in Ihrem Fragment des onCreateView:

Bundle bundle = getArguments(); 
Verwandte Themen