2016-07-04 6 views
2

Ich möchte nur eine bestimmte Fragment bekommen, wenn jemand Taste in der Activity gedrückt, aber es funktioniert nicht. Bitte helfen Sie mir, dieses Problem kurz zu machen.Wie man Aktivität zurückbekommt Knopf Rückkehr zum Fragment?

Dies ist der Code meiner 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()); 
    } 

} 

Mein Fragment Code, wo ich von 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; 


    } 

} 

Antwort

1

Aufruf getActivity().onBackPressed() in onBackPressed() nicht tut zurückkehren wollen Wirklich sinnvoll hier, du kannst es leicht in eine Endlosschleife kommen.

Vielleicht möchten super.onBackPressed() in Ihrem else Block nennen:

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

Durch die Verwendung des super Schlüsselwort Sie die onBackPressed() Methode der übergeordneten Klasse aufrufen (im Falle der Rück Stapel leer ist).

+0

Bitte näher ich verstehe nicht .. –

+0

Wenn das Backstack leer ist, ruft 'getActivity(). OnBackPressed()' rufen diese besondere 'onBackPressed()' wieder. Der Backstack wird immer noch leer sein, also wird er 'onBackPressed()' erneut aufrufen, und so weiter und so fort. Sie werden in einer Endlosschleife sein. Der Aufruf von 'super.onBackPressed()' ruft die Oberklasse ('Activity')' onBackPressed() 'auf, die die Standardfunktion' onBackPressed() 'hat. – earthw0rmjim

0

Bitte überprüfen popstack

Sie auch diese überprüfen link für weitere Informationen

+0

Es funktioniert auch noch nicht –

Verwandte Themen