2016-07-04 3 views
2

Я просто хочу получить конкретное Fragment, когда кто-то нажал кнопку возврата в Activity, но он не работает. пожалуйста, помогите мне решить эту проблему.Как вернуть кнопку возврата к фрагменту?

Это код моего Activity

TopicDisplay.java

package androidthirst.company.abhi.totalenglish; 

import android.content.Intent; 
import android.content.res.Resources; 
import android.graphics.Color; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.webkit.WebView; 

public class TopicDisplay extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_topic_display); 
     String data = getIntent().getExtras().getString("first"); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar1); 

     toolbar.setTitle(data); 
     toolbar.setTitleTextColor(Color.WHITE); 
     setSupportActionBar(toolbar); 
     toolbar.setNavigationIcon(R.mipmap.ic_arrow_back_black_36dp); 

     WebView tabViewing = (WebView) findViewById(R.id.webView); 

     tabViewing.loadUrl(getIntent().getDataString()); 
    } 

} 

Мой Fragment код, где я хочу, чтобы вернуться из Activity

package androidthirst.company.abhi.totalenglish; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.res.Resources; 
import android.graphics.Color; 
import android.net.Uri; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.ListFragment; 
import android.support.v7.widget.Toolbar; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 


public class Tab1Fragment extends Fragment { 
    ListView listView; 
    String[] image1; 
    String[] mainTopic; 
    String[] mainDescription; 

    public void onBackPressed() { 
     if (getFragmentManager().getBackStackEntryCount() > 0) { 
      getFragmentManager().popBackStack(); 
     } else { 
      getActivity().onBackPressed(); 
     } 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_tab1, container, false); 



     Resources res = getResources(); 
     mainTopic = res.getStringArray(R.array.MainTopic); 
     mainDescription = res.getStringArray(R.array.DescriptionContent); 
     listView = (ListView) view.findViewById(R.id.listView); 
     MyAdapter myAdapter = new MyAdapter(getActivity(), mainTopic, image1, mainDescription); 
     listView.setAdapter(myAdapter); 

//  toolbar.setTitleTextColor(Color.WHITE); 


     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       switch (position) { 
        case 0: 
         Intent i0 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         getActivity().overridePendingTransition(0, 0); 
         i0.putExtra("first", "Active Passive"); 
         Uri uri0 = Uri.parse("file:///android_asset/ActivePassive.html"); 
         i0.setData(uri0); 
         startActivity(i0); 
         break; 
        case 1: 
         Intent i1 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         getActivity().overridePendingTransition(0, 0); 
         i1.putExtra("first", "Adjective"); 
         Uri uri1 = Uri.parse("file:///android_asset/Adjective.html"); 
         i1.setData(uri1); 
         startActivity(i1); 
         break; 
        case 2: 
         Intent i2 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         i2.putExtra("first", "Adverb"); 
         Uri uri2 = Uri.parse("file:///android_asset/adverb.html"); 
         i2.setData(uri2); 
         startActivity(i2); 
         break; 
        case 3: 
         Intent i3 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         i3.putExtra("first", "Article"); 
         Uri uri3 = Uri.parse("file:///android_asset/article.html"); 
         i3.setData(uri3); 
         startActivity(i3); 
         break; 
        case 4: 
         Intent i4 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         i4.putExtra("first", "Clause"); 
         Uri uri4 = Uri.parse("file:///android_asset/clause.html"); 
         i4.setData(uri4); 
         startActivity(i4); 
         break; 
        case 5: 
         Intent i5 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         Uri uri5 = Uri.parse("file:///android_asset/conjunction.html"); 
         i5.putExtra("first", "Conjunction"); 
         i5.setData(uri5); 
         startActivity(i5); 
         break; 
        case 6: 
         Intent i6 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         i6.putExtra("first", "Degree"); 
         Uri uri6 = Uri.parse("file:///android_asset/degree.html"); 
         i6.setData(uri6); 
         startActivity(i6); 
         break; 
        case 7: 
         Intent i7 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         i7.putExtra("first", "Determiner"); 
         Uri uri7 = Uri.parse("file:///android_asset/determiner.html"); 
         i7.setData(uri7); 
         startActivity(i7); 
         break; 
        case 8: 
         Intent i8 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         i8.putExtra("first", "Direct Indirect"); 
         Uri uri8 = Uri.parse("file:///android_asset/direct.html"); 
         i8.setData(uri8); 
         startActivity(i8); 
         break; 
        case 9: 
         Intent i9 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         i9.putExtra("first", "Figur of Speech"); 
         Uri uri9 = Uri.parse("file:///android_asset/figur.html"); 
         i9.setData(uri9); 
         startActivity(i9); 
         break; 
        case 10: 
         Intent i10 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         i10.putExtra("first", "Gender"); 
         Uri uri10 = Uri.parse("file:///android_asset/gender.html"); 
         i10.setData(uri10); 
         startActivity(i10); 
         break; 
        case 11: 
         Intent i11 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         i11.putExtra("first", "Hymonyms"); 
         Uri uri11 = Uri.parse("file:///android_asset/homonyms.html"); 
         i11.setData(uri11); 
         startActivity(i11); 
         break; 
        case 12: 
         Intent i12 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         i12.putExtra("first", "Idoms"); 
         Uri uri12 = Uri.parse("file:///android_asset/idoms.html"); 
         i12.setData(uri12); 
         startActivity(i12); 
         break; 
        case 13: 
         Intent i13 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         i13.putExtra("first", "Noun"); 
         Uri uri13 = Uri.parse("file:///android_asset/noun.html"); 
         i13.setData(uri13); 
         startActivity(i13); 
         break; 
        case 14: 
         Intent i14 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         i14.putExtra("first", "Plural"); 
         Uri uri14 = Uri.parse("file:///android_asset/plural.html"); 
         i14.setData(uri14); 
         startActivity(i14); 
         break; 
        case 15: 
         Intent i15 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         i15.putExtra("first", "Preposition"); 
         Uri uri15 = Uri.parse("file:///android_asset/preposition.html"); 
         i15.setData(uri15); 
         startActivity(i15); 
         break; 
        case 16: 
         Intent i16 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         i16.putExtra("first", "Pronoun"); 
         Uri uri16 = Uri.parse("file:///android_asset/pronoun.html"); 
         i16.setData(uri16); 
         startActivity(i16); 
         break; 
        case 17: 
         Intent i17 = new Intent(getActivity().getApplicationContext(), TopicDisplay.class); 
         i17.putExtra("first", "Verbs"); 
         Uri uri17 = Uri.parse("file:///android_asset/verbs.html"); 
         i17.setData(uri17); 
         startActivity(i17); 
         break; 


       } 

      } 
     }); 


     return view; 


    } 

} 

ответ

1

Вызов getActivity().onBackPressed() в onBackPressed() не действительно здесь смысл, вы можете легко попасть в бесконечный цикл.

Вы можете позвонить super.onBackPressed() в вашем else блоке:

@Override 
public void onBackPressed() { 
    if (getFragmentManager().getBackStackEntryCount() > 0) { 
     getFragmentManager().popBackStack(); 
    } else { 
     super.onBackPressed(); 
    } 
} 

Используя super ключевое слово вы называете onBackPressed() метод суперкласса (в случае, если задний стек пуст).

+0

Просьба подробно я не понимаю .. –

+0

Если backstack пуст, вызов 'getActivity(). OnBackPressed()' будем называть этот конкретный 'onBackPressed()' снова. Столбец будет по-прежнему пустым, поэтому он снова вызовет этот 'onBackPressed()' 'и т. Д. И так далее. Вы будете в бесконечном цикле. Вызов 'super.onBackPressed()' вызовет суперкласс ('Activity')' onBackPressed() ', который имеет функцию' onBackPressed() 'по умолчанию. – earthw0rmjim

0

Пожалуйста, проверьте popstack

Также вы проверить это link для получения дополнительной информации

+0

Он еще не работает –

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