2012-06-18 22 views
9

Tôi đang thực hiện lớp maswebview và tôi chỉ muốn hoàn thành hoạt động này. Tôi đã thử maswebview.this.finish() nhưng khi được thực thi, ứng dụng đã bị đóng. Sau đó, nếu tôi thiết lập một cái nhìn mới cho các nội dung tab, nó được tải đúng cách và webviewmas dissapears nhưng chỉ trong một thời gian, sau đó xuất hiện một lần nữa phù hợp toàn màn hình. Làm thế nào để kết thúc maswebview hoàn toàn? ThanK bạnkết thúc hoạt động hiện tại của android khiến ứng dụng đóng

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

thêm dấu vết ngăn xếp đầy đủ của ngoại lệ – Houcine

+2

bạn phải thêm mã ở đây có liên quan hơn, điều này không đủ để nói điều gì đó. – Sajmon

+0

vâng, xin lỗi, vui lòng xem các chỉnh sửa. Không có ngoại lệ trên logcat, ứng dụng chỉ đóng mà không có lỗi – Jaume

Trả lời

5

Bạn có bất cứ hoạt động khác của ứng dụng của bạn trong ngăn xếp vào thời điểm bạn gọi kết thúc()? Nếu không, bạn sẽ muốn bắt đầu hoạt động mong muốn thay vì hoàn thành hoạt động hiện tại.

Nhưng thực sự có vẻ như với tôi rằng bạn đang cố gắng thực hiện điều gì đó có thể được thực hiện đơn giản hơn. Bạn có thể cung cấp thêm thông tin về nhiệm vụ trong tầm tay và cấu trúc ứng dụng của bạn mà bạn đang cố gắng thực hiện không?

Từ những gì bạn đã nói, có vẻ như bạn có giao diện người dùng theo tab và bạn đang cố gắng hiển thị chế độ xem web ở một trong các tab, sau đó ẩn nó.

Trước tiên, tôi không thấy lý do bạn muốn xem web trong một hoạt động riêng biệt. Dường như với tôi bạn chỉ có thể có nó trong bố trí của một trong các tab và chỉ cần gọi setVisibility (GONE) để ẩn nó.

Thứ hai - và điều này là quan trọng - trông giống như bạn đang cố gắng để thực hiện các tab cách - TabWidget, TabHost, vv Vì Honeycomb đã được phát hành, có nhiều thuận tiện hơn cách để thực hiện giao diện người dùng theo thẻ - Action Bar Tabs and Fragments - cách tiếp cận đó thuận tiện hơn nhiều và sẽ khiến cho các vấn đề về webview của bạn lỗi thời: có một điều gọi là WebViewFragment về cơ bản là WebView nhưng thông minh hơn - nó sẽ xử lý vòng đời của riêng bạn với nỗ lực tối thiểu cần thiết từ bạn (tức là tạm dừng khi bị xóa, tiếp tục lại khi thêm). Nó sẽ mất một số nỗ lực để nghiên cứu trên mảnh vỡ, nhưng nó cũng có giá trị nó. Bạn có thể nhận được Fragments API cho sdks Android trước Honeycomb như một thư viện tĩnh - nó được gọi là android-support-v4 và bạn có thể tải xuống nó trong Android SDK Manager.

+0

WebViewFragment là điểm khởi đầu để tiếp cận nó!Tôi đánh giá cao sự giúp đỡ của bạn rất nhiều – Jaume

+0

Bạn được chào đón, vui vì tôi có thể giúp đỡ. –

2

Bạn đang gọi "maswebview.this.finish();" trước khi Hoạt động mới được bắt đầu? Bạn cũng có thể thêm android: nohistory = "true" vào tệp manifest.xml của mình. Điều này sẽ khiến hoạt động hiện tại trở thành hoạt động duy nhất trong hàng đợi. Xem HERE

Bạn cần cung cấp thêm một chút thông tin để chúng tôi hiểu rõ hơn chính xác những gì đang diễn ra.

Tôi hy vọng điều này sẽ hữu ích.

+0

cả hai phương pháp đều không hoạt động hoàn toàn nhưng liên kết tốt như điểm khởi đầu ... +1 – Jaume

0

Hãy thử đoạn mã sau

@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

Bạn có hoạt động gốc nào đang khởi chạy ứng dụng này không? Nếu có, hãy đảm bảo rằng bạn không gọi kết thúc() sau khi khởi chạy maswebview, theo cách đó hoạt động gốc sẽ vẫn còn trong ngăn xếp. Khi maswebview sẽ thoát, onResume sẽ được gọi cho hoạt động gốc của bạn.

Các vấn đề liên quan