2015-09-24 90 views
-1

我正在與viewpager及其片段的一些應用程序工作。問題是,後退按鈕不工作時,它用於關閉應用程序。但在其他情況下,它work.is有任何錯誤的代碼在這裏或關閉應用程序的竅門。後退按鈕不關閉應用程序

編輯:我什至overrided onbackpressed方法,只是把烤麪包信息,而不是finish();但再次吐司消息沒有出現。

這是我的主要活動:

import android.os.Bundle; 
import android.support.design.widget.TabLayout; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuInflater; 

public class MaxMainActivity extends AppCompatActivity { 

    private final int numOfPages = 3; //viewpager has 4 pages 
    private final String[] pageTitle = {"STUDY", "MENU", "QUIZ"}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_max_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 

     for (int i = 0; i < numOfPages; i++) { 
      tabLayout.addTab(tabLayout.newTab().setText(pageTitle[i])); 
     } 

     //set gravity for tab bar 
     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

     final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     final PagerAdapter adapter = new PagerAdapter 
       (getSupportFragmentManager(), numOfPages); 

     viewPager.setAdapter(adapter); 
     viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
     tabLayout.setOnTabSelectedListener(onTabSelectedListener(viewPager)); 


    } 




    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu_max_main, menu); 
     return true; 
    } 

    private TabLayout.OnTabSelectedListener onTabSelectedListener(final ViewPager pager) { 
     return new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       pager.setCurrentItem(tab.getPosition()); 
      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 

      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 

      } 
     }; 
    } 
} 

這是主要的佈局:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/main_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:background="?attr/colorPrimaryDark" 
     android:elevation="6dp" 
     android:minHeight="?attr/actionBarSize" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/toolbar" 
     android:background="?attr/colorPrimary" 
     android:minHeight="?attr/actionBarSize" 
     style="@style/MyCustomTabLayout" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/tab_layout" /> 

</RelativeLayout> 

編輯: 有些地方我看這個問題是很常見的舊的API與新的大號事務工作。你的想法是什麼?

+1

你可能會錯過一些標籤,可能會幫助你縮小你想得到的答案的類型。 –

+0

刪除重寫的'onBackPressed()'方法,因爲它只是執行默認行爲。 – NasaGeek

+0

'public void onBackPressed(){ finish();你爲什麼要那樣做? – njzk2

回答

0

你不應該重寫onBackPressed,在文檔閱讀:

採取彈出的片段回棧或整理活動 適當的照顧。

這是真正的應用程序不會立即死亡,OS需要關心這樣的東西。

0

你不需要重寫onBackPressed()移除覆寫 然後重寫的onStop,並呼籲onBackPressed從裏面它 讀一些關於Android的生命週期,你會得到它

@Override 
protected void onStop(Bundle savedInstanceState){ 
    super.onStop(savedInstanceState); 
    onBackPressed(); 
} 

試試看告訴我如果它工作

+0

參數savedinstancestate導致error.how我可以修改它嗎? – mohamad

+0

嘗試不調用超級並指定錯誤 –

+0

錯誤說onstop()在appcompatactivity不能應用於(android.os.bundle) – mohamad

相關問題