2015-07-02 5 views
0

Что у меня есть: Ящик для навигации, фрагмент, где я отправляю новости rss, две кнопки внизу экрана.Открыть WebView в фрагменте MainActivity

Что я хочу: Откройте веб-представление внутри фрагмента, нажав одну из двух кнопок.

Мои файлы:

MainActivity.java:

import android.content.ActivityNotFoundException; 
    import android.content.Intent; 
    import android.net.Uri; 
    import android.os.Bundle; 
    import android.support.v4.app.Fragment; 
    import android.support.v4.app.FragmentManager; 
    import android.support.v4.app.FragmentTransaction; 
    import android.support.v4.widget.DrawerLayout; 
    import android.support.v7.app.ActionBar; 
    import android.support.v7.app.ActionBarActivity; 
    import android.view.View; 
    import android.webkit.WebView; 
    import android.widget.Button; 

    import com.jmsliu.rssreader.model.PostDataModel; 
    import com.jmsliu.rssreader.model.vo.DrawerData; 
    import com.jmsliu.rssreader.model.vo.PostData; 

    public class MainActivity extends ActionBarActivity 
      implements NavigationDrawerFragment.NavigationDrawerCallbacks, 
      PostListFragment.PostListFragmentInteractionListener{ 

     /** 
     * Fragment managing the behaviors, interactions and presentation of the navigation drawer. 
     */ 
     private NavigationDrawerFragment mNavigationDrawerFragment; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
      getSupportActionBar().setCustomView(R.layout.abs_layout); 

      Button youTubeButton = (Button) findViewById(R.id.button2); 
      youTubeButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 

       } 
      }); 
      mNavigationDrawerFragment = (NavigationDrawerFragment) 
        getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); 

      // Set up the drawer. 
      mNavigationDrawerFragment.setUp(
        R.id.navigation_drawer, 
        (DrawerLayout) findViewById(R.id.drawer_layout)); 
     } 

     @Override 
     public void onNavigationDrawerItemSelected(int position) { 
      //PostListFragment postListFragment = (PostListFragment) getSupportFragmentManager().findFragmentById(R.id.postListView); 
      PostListFragment postListFragment = (PostListFragment) getSupportFragmentManager().findFragmentByTag("postlist_fragment"); 

      DrawerData data = GlobalClass.instance().categoryList.get(position); 
      if(data.name != "") { 
       String url = String.format(GlobalClass.CATEGORY_RSSURL, data.name); 
       postListFragment.rssURL = String.format(GlobalClass.CATEGORY_RSSURL, data.name); 
       //Toast.makeText(this, url, Toast.LENGTH_SHORT).show(); 

      } else { 
       postListFragment.rssURL = GlobalClass.RSSURL; 
       //Toast.makeText(this, GlobalClass.instance().RSSURL, Toast.LENGTH_SHORT).show(); 
      } 

      PostDataModel.getInstance().listData.clear(); 
      PostDataModel.getInstance().guidList.clear(); 
      postListFragment.manualRefresh(); 
     } 

     @Override 
     public void onPostSelected(int index) { 
      PostData data = PostDataModel.getInstance().listData.get(index); 
      FragmentManager fragmentManager = getSupportFragmentManager(); 
      PostViewFragment postViewFragment = (PostViewFragment) getSupportFragmentManager().findFragmentByTag("postview_fragment"); 
      if(postViewFragment == null) { 
       postViewFragment = PostViewFragment.newInstance(data.postLink); 
      } else { 
       postViewFragment.urlLink = data.postLink; 
      } 

      postViewFragment.title = data.postTitle; 
      FragmentTransaction ft = fragmentManager.beginTransaction(); 
      ft.replace(R.id.container, postViewFragment, "postview_fragment"); 
      ft.addToBackStack(null); 
      ft.commit(); 
     } 
    } 

activity_main.xml:

<!-- As the main content view, the view below consumes the entire 
     space available using match_parent in both dimensions. --> 
    <FrameLayout android:id="@+id/container" android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <fragment 
      android:id="@+id/postlist_fragment" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:tag="postlist_fragment" 
      android:name="com.jmsliu.rssreader.PostListFragment"/> 

     <Button 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="SEGNALA" 
      android:id="@+id/segnala" 
      android:background="#000000" 
      android:textColor="#ffffff" 
      android:clickable="true" 
      android:layout_gravity="center|bottom" 
      android:layout_alignParentTop="false" 
      android:layout_alignWithParentIfMissing="false" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentStart="false" 
      android:layout_alignParentEnd="false" 
      android:layout_alignParentBottom="true" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/button2" 
      android:text="YouTube" 
      android:background="#000000" 
      android:textColor="#ffffff" 
      android:clickable="true" 
      android:layout_gravity="right|bottom" /> 

    </FrameLayout> 

    <!-- android:layout_gravity="start" tells DrawerLayout to treat 
     this as a sliding drawer on the left side for left-to-right 
     languages and on the right side for right-to-left languages. 
     If you're not building against API 17 or higher, use 
     android:layout_gravity="left" instead. --> 
    <!-- The drawer is given a fixed width in dp and extends the full height of the container. --> 
    <fragment android:id="@+id/navigation_drawer" 
     android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent" 
     android:layout_gravity="start" android:name="com.jmsliu.rssreader.NavigationDrawerFragment" 
     tools:layout="@layout/fragment_navigation_drawer" /> 

</android.support.v4.widget.DrawerLayout> 

ответ

0

Это выглядит просто. Просто создайте новый фрагмент с WebView и сделать замену фрагмента внутри кнопки на мыши слушателем как этот

button.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         Fragment fragment = WebViewFragment.newInstance(string dataOrAnythingYouWillUseToPassContent) 
getSupportFragmentManager().beginTransaction().replace(android.R.id.content, R.id.fragment_container,fragment).addToBackStack(stringTag).commit(); 
        } 
       }); 

В webviewfragment статический метод newInstance пакета данных на фрагменты аргументов, и получить его в методе OnCreate или всякий раз, когда вы будете нуждаться в них.

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