2013-09-17 6 views
0

Я хочу реализовать кнопку «Назад» в своем приложении. Я использую фрагменты, каждый из которых показывает другой веб-просмотр. Прямо сейчас, если я нажму кнопку «Назад», он закрывает приложение независимо от того, где я. Я бы хотел, чтобы он вернулся, как браузер. У меня есть мой MainActivity.java, fragment1.java и т.д. до fragment5.javaРеализация кнопки возврата в фрагменте webview

Вот мой MainActivity.java:

package com.----; 

import java.util.Locale; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.PagerTabStrip; 
import android.support.v4.view.ViewPager; 
import android.view.KeyEvent; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.webkit.WebSettings; 

public class MainActivity extends FragmentActivity { 

    SectionsPagerAdapter mSectionsPagerAdapter; 
    ViewPager   mViewPager; 




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

     mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

     mViewPager = (ViewPager) findViewById(R.id.pager); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 


    } 

    public class SectionsPagerAdapter extends FragmentPagerAdapter { 

     public SectionsPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 


     @Override 
     public Fragment getItem(int position) { 

      Fragment fragment; 
      switch (position) { 
       case 0: 
        fragment = new fragment1(); 
        break; 
       case 1: 
        fragment = new fragment2(); 
        break; 
       case 2: 
        fragment = new fragment3(); 
        break; 
       case 3: 
        fragment = new fragment4(); 
        break; 
       case 4: 
        fragment = new fragment5(); 
        break; 
       default: 
        fragment = null; 
        break; 
      } 
      return fragment; 

     } 

     @Override 
     public int getCount() { 
      return 5; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      Locale l = Locale.getDefault(); 
      switch (position) { 
       case 0: 
        return getString(R.string.tab1).toUpperCase(l); 
       case 1: 
        return getString(R.string.tab2).toUpperCase(l); 
       case 2: 
        return getString(R.string.tab3).toUpperCase(l); 
       case 3: 
        return getString(R.string.tab4).toUpperCase(l); 
       case 4: 
        return getString(R.string.tab5).toUpperCase(l); 
      } 
      return null; 
     } 
    } 
} 

А вот мой fragment1.java:

package com.----; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.app.NavUtils; 
import android.support.v4.view.ViewPager; 
import android.view.Gravity; 
import android.view.KeyEvent; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.view.Window; 
import android.view.WindowManager; 
import android.webkit.WebSettings; 

public class fragment1 extends Fragment { 


    WebView myWebView; 



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


     View root = inflater.inflate(R.layout.fragment1, container, false); 

     myWebView = (WebView) root.findViewById(R.id.webview1); 
     myWebView.setWebViewClient(new WebViewClient()); 
     myWebView.loadUrl("url"); 
     return root; 

    } 
} 

Если я пытаюсь использовать этот solutions и Я прикладываю силу, когда тестирую ее и нажимаю кнопку «Назад».

Here является его логарифмом.

ответ

-1

Вы можете начать перекрывая кнопку заднюю прессу в вашем MainActivity

@Override 
public void onBackPressed() { 
    //super.onBackPressed() 
    //handle the press here to switch fragments 
} 
+0

Уже попробовал. Затем он заставляет меня зажиматься каждый раз, когда я нажимаю кнопку «Назад». – user2763406

0

Просто переопределить onBackPressed() methid вашей деятельности

+0

Я пробовал это, и ничего не происходит. Когда я тестирую его на своем телефоне, он вибрирует и получает вход, но ничего не происходит. ЕСЛИ я использую его в сочетании с другими решениями, я все равно получаю силу. – user2763406

+0

@ user2763406, пожалуйста, пройдите мимо вашего кода с помощью метода переопределения –

+0

http://pastebin.com/T746keWD – user2763406

0
FragmentManager fragmentManager = getSupportFragmentManager(); 
       FragmentTransaction fragmentTransaction = fragmentManager 
         .beginTransaction(); 
       First first_act = new First(); 

       fragmentTransaction.replace(R.id.fragment_container, 
         first_act); 
       fragmentTransaction.addToBackStack("first_act"); 
       fragmentTransaction.commit(); 

Добавьте эти символы в mainactivity, , а затем использовать этот onbackpressed в фрагмент

@Override 
    public void onBackPressed() { 

    } 
+0

Я получаю три ошибки: несоответствие 1.Type: невозможно преобразовать из android.support.v4.app.FragmentTransaction в android.app.FragmentTransaction 2.First не может быть разрешен для типа 3. frag_container не может быть разрешен или не является полем – user2763406

1

В вашей деятельности переопределение на backpressed:

@Override 
    public void onBackPressed() { 
     switch (mViewPager.getCurrentItem()) { 
     case 0: 
      if (!webViewGoBack(0)) { 
        //do something if webview cannot go back 
      } 
      break; 
     case 1: 

      break; 
     default: 

     } 
    } 

public boolean webViewGoBack(int num) { 
     SectionsPagerAdapter adapter = ((SectionsPagerAdapter)mViewPager.getAdapter()); 
     Fragment f = (Fragment)adapter.getFragment(num); 
     if (f!= null) { 
      return f.webViewGoBack(); 
     } 
     return false; 
    } 

f.webViewGoBack() метод в вас фрагмент:

public boolean WebViewGoBack() { 
if(webView.canGoBack()){ 
    webView.goBack(); 
    return true; 
} 
return false; //webview cannot go back, so use the method of the BackButton 
} 
Смежные вопросы