2017-07-10 62 views
0

添加向下滑動,刷新功能這是我的標籤視圖在MainActivity佈局如何在標籤視圖佈局

package com.nitol.aust.cse.austclassmanager; 


public class ResultCheckActivity extends AppCompatActivity implements 
NavigationView.OnNavigationItemSelectedListener{ 

private TabLayout t1; 
private ViewPager vp1; 
Toolbar toolbar; 
DrawerLayout drawerLayout; 
NavigationView navigationView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.navi_draw_result); 

    t1 = (TabLayout) findViewById(R.id.tab1); 
    vp1 = (ViewPager) findViewById(R.id.ViewPager1); 


    setUpMyViewPager(vp1); 
    t1.setupWithViewPager(vp1); 


    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout) ; 
    navigationView = (NavigationView) findViewById(R.id.navigation_view); 
    ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle 
      (this,drawerLayout,toolbar, R.string.open_drawer, R.string.close_drawer); 
    drawerLayout.setDrawerListener(actionBarDrawerToggle); 
    actionBarDrawerToggle.syncState(); 
    navigationView.setNavigationItemSelectedListener(this); 
    navigationView.getMenu().getItem(5).setChecked(true); 



} 

void setUpMyViewPager(ViewPager vp){ 

    ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    viewPagerAdapter.addMyFragment(new WebViewEvents(),"News & Events"); 
    viewPagerAdapter.addMyFragment(new WebViewAcademic(),"Academic Calendar"); 
    viewPagerAdapter.addMyFragment(new WebViewTheory(),"Theory Results"); 
    viewPagerAdapter.addMyFragment(new WebViewLab(),"Lab Results"); 
    viewPagerAdapter.addMyFragment(new WebViewTeacher(),"Faculty Members"); 


    vp.setAdapter(viewPagerAdapter); 
} 



class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> my_list = new ArrayList<Fragment>(); 
    private final List<String> my_title = new ArrayList<String>(); 

    public ViewPagerAdapter(FragmentManager fragmentManager) { 
     super(fragmentManager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return my_list.get(position); 
    } 

    @Override 
    public int getCount() { 
     return my_list.size(); 
    } 


    void addMyFragment(Fragment f, String title){ 
     my_list.add(f); 
     my_title.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return my_title.get(position); 
    } 

} 




@Override 
public void onBackPressed() { 

    if(drawerLayout.isDrawerOpen(GravityCompat.START)){ 
     drawerLayout.closeDrawer(GravityCompat.START); 
    } 

    else{ 
     super.onBackPressed(); 
    } 

} 

@Override 
public boolean onNavigationItemSelected(@NonNull MenuItem item) { 

    int id = item.getItemId(); 

    switch (id){ 

     case R.id.home: 
      Intent intent0 = new Intent(ResultCheckActivity.this, MenuActivity.class); 
      startActivity(intent0); 
      finish(); 

      break; 

     case R.id.routine: 
      Intent intent = new Intent(ResultCheckActivity.this, ClassRoutineActivity.class); 
      startActivity(intent); 
      finish(); 

      break; 

     case R.id.cgpa: 
      Intent intent2 = new Intent(ResultCheckActivity.this, CgpaCalculator.class); 
      startActivity(intent2); 
      finish(); 

      break; 

     case R.id.details: 
      Toast.makeText(getApplicationContext(),"Class Details",Toast.LENGTH_SHORT).show(); 

      break; 

     case R.id.quiz: 
      Toast.makeText(getApplicationContext(),"Quiz Reminder",Toast.LENGTH_SHORT).show(); 

      break; 

     case R.id.result: 

      break; 


     case R.id.profile: 
      Intent intent3 = new Intent(ResultCheckActivity.this, ProfileActivity.class); 
      startActivity(intent3); 
      finish(); 

      break; 

     case R.id.about: 
      Toast.makeText(getApplicationContext(),"About",Toast.LENGTH_SHORT).show(); 

      break; 

     case R.id.settings: 
      Intent intent4 = new Intent(ResultCheckActivity.this, Settings.class); 
      startActivity(intent4); 
      finish(); 

      break; 

    } 

    drawerLayout.closeDrawer(GravityCompat.START); 


    return true; 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    getMenuInflater().inflate(R.menu.menu_tool,menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    int id = item.getItemId(); 

    if(id == R.id.tool_settings){ 
     Intent intent = new Intent(ResultCheckActivity.this, Settings.class); 
     startActivity(intent); 

    } 
    else if(id == R.id.tool_about){ 

     Toast.makeText(getApplicationContext(),"This is About !", Toast.LENGTH_SHORT).show(); 

    } 

    return super.onOptionsItemSelected(item); 
} 
} 

,這是我的標籤,我想補充的刷新功能

void setUpMyViewPager(ViewPager vp){ 

ViewPagerAdapter viewPagerAdapter = new 
ViewPagerAdapter(getSupportFragmentManager()); 
viewPagerAdapter.addMyFragment(new WebViewEvents(),"News & Events"); 
viewPagerAdapter.addMyFragment(new WebViewAcademic(),"Academic Calendar"); 
viewPagerAdapter.addMyFragment(new WebViewTheory(),"Theory Results"); 
viewPagerAdapter.addMyFragment(new WebViewLab(),"Lab Results"); 
viewPagerAdapter.addMyFragment(new WebViewTeacher(),"Faculty Members"); 


vp.setAdapter(viewPagerAdapter); 
} 

現在假設我想在「WebViewEvents」類中添加刷新。下面

package com.nitol.aust.cse.austclassmanager; 

public class WebViewEvents extends Fragment { 

View v; 
WebView wb4; 

private String currentUrl = "http://aust.edu/news_events.htm"; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    v = inflater.inflate(R.layout.webview_event, container,false); 

    wb4 = (WebView) v.findViewById(R.id.webView_event); 

    wb4.setInitialScale(1); 
    wb4.getSettings().setJavaScriptEnabled(true); 
    wb4.getSettings().setLoadWithOverviewMode(true); 
    wb4.getSettings().setUseWideViewPort(true); 
    wb4.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
    wb4.setScrollbarFadingEnabled(false); 
    wb4.loadUrl(currentUrl); 
    wb4.setWebViewClient(new WebViewClient()); 
    wb4.getSettings().setBuiltInZoomControls(true); 
    wb4.getSettings().setUseWideViewPort(true); 
    wb4.getSettings().setLoadWithOverviewMode(true); 
    wb4.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 


    return v; 

} 

} 

類給予我發現了一些說明,但這裏最大的的是說,我必須@Override onRefresh()方法...但我聲明我的課作爲一種非活性類。所以在一個非活動類中,我不能重寫一個方法。這就是爲什麼我沒有找到我的解決方案...

回答

1

你只需要閱讀docs on SwipeRefreshLayout

首先,添加SwipeRefreshLayout到你的活動佈局:

<android.support.v4.widget.SwipeRefreshLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/swiperefresh" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    // here is your content 

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

在隨後發現刷卡刷新佈局的情況下你活動:

mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefresh); 

並設置刷新監聽器在觸發更新方法

/* 
* Sets up a SwipeRefreshLayout.OnRefreshListener that is invoked when the user 
* performs a swipe-to-refresh gesture. 
*/ 
mSwipeRefreshLayout.setOnRefreshListener(
    new SwipeRefreshLayout.OnRefreshListener() { 
     @Override 
     public void onRefresh() { 
      Log.i(LOG_TAG, "onRefresh called from SwipeRefreshLayout"); 

      // This method performs the actual data-refresh operation. 
      // The method calls setRefreshing(false) when it's finished. 
      myUpdateOperation(); 
     } 
    } 
); 

欲瞭解更多信息,請閱讀文檔,鏈接在答案的開頭。

你也可以看看谷歌的樣本:

所有谷歌樣本的列表,你可以找到here

希望它可以幫助

+0

我想在非活動類添加此。所以在非活動類中,不可能重寫一個方法。這就是爲什麼我面臨問題 –

+0

@NitolDasNeel你想添加刷卡刷新到你的'公共類WebViewEvents擴展Fragment'?如果是,那麼只需在我的答案中將'activity'替換爲'fragment'(將SwipeRefreshLayout添加到片段佈局,找到它並提供onRefreshListener)。請注意,你說在一個非活動類中重寫onRefresh方法是不可能的,但Activity也沒有onRefresh方法,所以你不能覆蓋這樣的方法。你可以做的是通過你的活動/片段實現監聽器,如下所示:'public class WebViewEvents extends Fragment implements SwipeRefreshLayout.OnRefreshListener' – krossovochkin

+0

然後,你可以(如何調用它)重寫onRefresh方法(但實際上是實現並且不覆蓋) – krossovochkin

0

最後,這樣做是爲了工作我

package com.nitol.aust.cse.austclassmanager; 
public class WebViewEvents extends Fragment{ 

View v; 
WebView wb4; 
SwipeRefreshLayout mySwipeRefreshLayout; 

private String currentUrl = "http://aust.edu/news_events.htm"; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    v = inflater.inflate(R.layout.webview_event, container,false); 

    mySwipeRefreshLayout = (SwipeRefreshLayout) v.findViewById(R.id.swiperefresh); 
    wb4 = (WebView) v.findViewById(R.id.webView_event); 

    wb4.setInitialScale(1); 
    wb4.getSettings().setJavaScriptEnabled(true); 
    wb4.getSettings().setLoadWithOverviewMode(true); 
    wb4.getSettings().setUseWideViewPort(true); 
    wb4.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
    wb4.setScrollbarFadingEnabled(false); 
    wb4.loadUrl(currentUrl); 
    wb4.setWebViewClient(new WebViewClient()); 
    wb4.getSettings().setBuiltInZoomControls(true); 
    wb4.getSettings().setUseWideViewPort(true); 
    wb4.getSettings().setLoadWithOverviewMode(true); 
    wb4.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
    wb4.setWebViewClient(new MyWebViewClient()); 

    mySwipeRefreshLayout.setOnRefreshListener(
      new SwipeRefreshLayout.OnRefreshListener() { 
       @Override 
       public void onRefresh() { 
        wb4.loadUrl(currentUrl); 
       } 
      } 
    ); 


    return v; 

} 

public class MyWebViewClient extends WebViewClient{ 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     mySwipeRefreshLayout.setRefreshing(false); 
     currentUrl = url; 
     super.onPageFinished(view, url); 
    } 
} 

}

我加入這個覆蓋方法我班裏面

mySwipeRefreshLayout.setOnRefreshListener(
     new SwipeRefreshLayout.OnRefreshListener() { 
      @Override 
      public void onRefresh() { 
       wb4.loadUrl(currentUrl); 
      } 
     } 
); 

加入這個停止清爽動畫

public class MyWebViewClient extends WebViewClient{ 

@Override 
public void onPageFinished(WebView view, String url) { 
    mySwipeRefreshLayout.setRefreshing(false); 
    currentUrl = url; 
    super.onPageFinished(view, url); 
} 

} 不要忘了添加最後停止動畫實例impliment

wb4.setWebViewClient(new MyWebViewClient());