2012-06-18 5 views
9

maswebview 클래스를 실행 중이므로이 작업 만 완료하고 싶습니다. 나는 maswebview.this.finish()을 시도했지만, 실행되면 앱이 종료되었습니다. 그런 다음 탭 콘텐트에 대한 새로운 뷰를 설정하면 올바르게로드되고 webviewmas가 사라지지만 잠시 동안 전체 화면에 다시 표시됩니다. maswebview를 완전히 끝내는 방법? 고맙습니다.android finish 현재 활동으로 인해 앱이 닫힙니다.

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

예외의 전체 스택 추적을 추가하려면 – Houcine

+2

여기에 더 많은 관련 코드를 추가해야합니다.이 코드는 무언가를 말하기에 충분하지 않습니다. – Sajmon

+0

예, 죄송합니다. 수정 사항을 참조하십시오. logcat에 예외는 없습니다. 앱은 오류없이 그냥 닫힙니다. – Jaume

답변

5

당신이 마무리 호출 시간을 기준으로 스택 앱 다른 활동이 있습니까()? 그렇지 않으면 현재 활동을 끝내기보다는 원하는 활동을 시작하기를 원할 것입니다.

하지만 사실 당신이 더 간단하게 할 수있는 것을 성취하려고 노력하고있는 것 같습니다. 현재 진행중인 작업과 함께 가고 싶은 앱 구조에 대해 더 많은 정보를 제공 할 수 있습니까?

당신이 말한 것으로부터, 당신은 탭이있는 것처럼 보이고 탭 중 하나에서 웹보기를 보여 주려고합니다.

먼저, 왜 당신이 별도의 활동에서 webview를 원하는지 모르겠다. 당신이 탭 중 하나의 레이아웃에서 그냥 그것을 가질 수 있고 그것을 숨기기 위해 setVisibility (GONE)을 호출 할 수 있습니다.

둘째 - 이이 중요하다는 - TabWidget, TabHost 등 벌집이 출시 되었기 때문에, 탭 UI를 구현하는 방법은 훨씬 더 편리있다 - 당신이하는 탭 이전 방식으로 구현하려는 것 같습니다 - Action Bar Tabs and Fragments - 그 접근 방식은 훨씬 편리하고 웹 뷰 문제를 쓸모 없게 만들 것입니다. 기본적으로 WebView이지만 더 똑똑한 것이 있습니다. 즉, 필요한 최소한의 노력으로 자체 라이프 사이클을 처리합니다 (예 : 제거 할 때 일시 중지, 추가 할 때 다시 시작).). 단편에 대한 연구는 어느 정도의 노력이 필요할 것입니다.하지만 그만한 가치가 있습니다. Honeycomb android sdks 이전 버전의 Fragments API를 정적 라이브러리로 가져올 수 있습니다. Android SDK 관리자에서 android-support-v4라는 파일을 다운로드 할 수 있습니다.

+0

WebViewFragment가 시작 지점이었습니다!도움을 많이 주셔서 감사합니다. – Jaume

+0

도와 드릴 수있어서 다행입니다. –

2

"maswebview.this.finish(); 새로운 활동이 시작되기 전에?

또한 기존 활동이 없어도이 새로운 활동을 시작하려는 경우 manifest.xml에 android : nohistory = "true"를 추가 할 수 있습니다. 그러면 현재 활동이 대기열의 유일한 활동이됩니다. 참조 HERE

정확히 무엇이 진행되고 있는지 더 잘 이해하려면 좀 더 많은 정보를 제공해야합니다.

이 정보가 도움이되기를 바랍니다.

+0

두 가지 방법 모두 완벽하게 작동하지 않지만 시작점으로 좋은 링크를 ... +1 – Jaume

0

시도 다음 코드

@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

이 프로그램을 시작하는 학급 활동이 있습니까? 그렇다면 maswebview를 시작한 후에 finish()를 호출하지 않도록합니다. 그러면 부모 액티비티가 스택에 남아있게됩니다. maswebview가 종료되면 onResume이 부모 작업에 호출됩니다.

관련 문제