2012-06-18 17 views
9

Wykonuję klasy maswebview i chciałbym zakończyć tylko tę aktywność. Próbowałem maswebview.this.finish(), ale po uruchomieniu aplikacja została zamknięta. Następnie, jeśli ustawię nowy widok dla zawartości karty, zostanie ona poprawnie załadowana, a wyświetlenia internetowe znikną, ale tylko na chwilę, a następnie ponownie się dopasują do pełnego ekranu. Jak całkowicie zakończyć maswebview? ThanK youAndroid zakończyć bieżącą działalność powoduje zamknięcie aplikacji

public void onClick(View arg0) 
      { 
       /* 
       Intent intent = getIntent(); 
       intent.addFlags(Intent.FLAG_ACTIVITY_TASK_ON_HOME); 
       startActivityForResult(intent, 1); 
       Intent intentmas = new Intent (maswebview.this, mas.class); 
       intentmas.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
       intentmas.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       intentmas.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       intentmas.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
       View vista = getLocalActivityManager().startActivity("maswb", intentmas).getDecorView(); 
       setContentView(vista); */ 

       maswebview.this.finish(); 
+3

dodać pełną ślad stosu swojego wyjątkiem – Houcine

+2

trzeba dodać tutaj bardziej odpowiedni kod, to nie wystarczy, aby coś powiedzieć. – Sajmon

+0

Tak, przepraszam, proszę zobaczyć zmiany. Nie ma wyjątków na logcat, aplikacja jest po prostu zamknięta bez błędów – Jaume

Odpowiedz

5

Czy masz jakieś inne działania aplikacji w stosie do czasu można nazwać finish()? Jeśli tego nie zrobisz, będziesz chciał rozpocząć pożądaną aktywność zamiast kończyć bieżącą.

Ale faktycznie wydaje się mi się, że starasz się osiągnąć coś, co można zrobić prościej. Czy możesz podać więcej informacji o zadaniu i strukturę swoich aplikacji, z którymi chcesz się z tym pogodzić?

Z tego, co pan powiedział, wydaje się, że masz interfejs z zakładkami i starasz się pokazać webview w jednej z kart, a następnie ją ukryć.

Po pierwsze, nie widzę powodu, dla którego chcesz wyświetlać podgląd w oddzielnym działaniu. Wydaje mi się, że możesz po prostu mieć go w układzie jednej z kart i po prostu wywołać setVisibility (GONE), aby go ukryć.

drugie - i to jest ważne - wygląda na to, że próbujesz wdrożenia karty rejestru stary way - TabWidget, TabHost, itd. Ponieważ Honeycomb został wydany, jest znacznie bardziej wygodny sposób wdrożyć UI kartach - Action Bar Tabs and Fragments - to podejście jest o wiele wygodniejsze i odda swoje problemy webview nieaktualne: istnieje coś, co nazywa WebViewFragment który jest w zasadzie WebView ale mądrzejszy - będzie obsługiwać swój cykl życia przy minimalnym wysiłku wymaganym od ciebie (czyli pauzę po usunięciu, wznowione po dodaniu). Trzeba trochę wysiłku, aby studiować Fragmenty, ale warto. Możesz pobrać API Fragmentów dla sdk z Androidem pre-Honeycomb jako bibliotekę statyczną - nazywa się to Android-support-v4 i możesz ją pobrać w Menedżerze Android SDK.

+0

WebViewFragment był punktem wyjścia do osiągnięcia tego!Doceniam bardzo waszą pomoc – Jaume

+0

Nie ma za co, cieszę się, że mogłem pomóc. –

2

Dzwonisz "maswebview.this.finish();" przed rozpoczęciem nowego działania?

Także jeśli chcesz po prostu rozpocząć tę nową działalność bez konieczności starą aktywność w istnieniu następnie można dodać androida: Nohistory = „true” do manifest.xml. Spowoduje to, że bieżące działanie będzie jedyną aktywnością w kolejce. Zobacz HERE

Musisz podać trochę więcej informacji dla nas, aby lepiej zrozumieć, co dokładnie się dzieje.

Mam nadzieję, że to pomoże.

+0

obie metody nie działają całkowicie, ale dobry link jako punkt wyjścia ... +1 – Jaume

0

Spróbuj poniższy kod

@Override 
     public void onBackPressed() { 
     if(childView != null && parentLayout.getChildCount()==2){ 
      childView.stopLoading(); 
      parentLayout.removeViewAt(parentLayout.getChildCount()-1); 
      if(webView.getVisibility() == View.GONE) 
       webView.setVisibility(View.VISIBLE); 
     }else{   
      super.onBackPressed(); 
     } 
0

Czy masz działalność macierzystą, która uruchamia tę? Jeśli tak, upewnij się, że nie wywołasz metody finish() po uruchomieniu maswebview, w ten sposób aktywność nadrzędna pozostanie w stosie. Gdy strona maswebview zostanie zamknięta, onResume zostanie wywołany dla Twojej aktywności nadrzędnej.

Powiązane problemy