9

maswebview クラスを実行しており、このアクティビティだけを終了したいと考えています。試してみmaswebview.this.finish()ましたが、実行するとアプリが閉じられました。次に、タブのコンテンツに新しいビューを設定すると、それが正しく読み込まれ、webviewmas が消えますが、しばらくの間、フルスクリーンに合わせて再び表示されます。maswebview を完全に終了するには? ありがとうございました

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();
4

4 に答える 4

5

finish() を呼び出すまでに、スタック内にアプリの他のアクティビティはありますか? そうでない場合は、現在のアクティビティを終了する代わりに、目的のアクティビティを開始する必要があります。

しかし、実際には、もっと簡単にできることを達成しようとしているように思えます。当面のタスクと、それを実行しようとしているアプリの構造について、さらに情報を提供できますか?

あなたが言ったことから、UI にタブを付けて、タブの 1 つに webview を表示してから非表示にしようとしているようです。

まず、別のアクティビティで webview が必要な理由がわかりません。タブの1つのレイアウトにそれを配置し、 setVisibility(GONE) を呼び出して非表示にすることができるようです。

2番目-これは重要です-タブを古い方法で実装しようとしているようです-TabWidget、TabHostなど。ハニカムがリリースされて以来、タブ付きUIを実装するはるかに便利な方法-アクションバータブとフラグメント-そのアプローチははるかに便利で、webview の問題を時代遅れにします: WebViewFragmentと呼ばれるものがありますこれは基本的に WebView ですが、よりスマートです。最小限の労力で独自のライフサイクルを処理します (つまり、削除すると一時停止し、追加すると再開します)。Fragments について調べるには多少の努力が必要ですが、それだけの価値はあります。ハニカム以前の Android SDK 用の Fragments API を静的ライブラリとして取得できます。これは android-support-v4 と呼ばれ、Android SDK Manager でダウンロードできます。

于 2012-06-21T09:22:52.277 に答える
2

「maswebview.this.finish();」を呼び出していますか? 新しいアクティビティが開始される前に?

また、古いアクティビティを存在させずにこの新しいアクティビティを開始したい場合は、manifest.xml に android:nohistory="true" を追加できます。これにより、現在のアクティビティがキュー内の唯一のアクティビティになります。こちらをご覧ください

正確に何が起こっているのかをよりよく理解するために、もう少し情報を提供する必要があります.

これが役立つことを願っています。

于 2012-06-20T18:52:57.510 に答える
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();
        }
于 2012-06-21T08:45:02.307 に答える
0

このアクティビティを開始する親アクティビティはありますか? はいの場合は、maswebview の起動後に finish() を呼び出さないようにしてください。そうすると、親アクティビティがスタックに残ります。maswebview が終了すると、親アクティビティに対して onResume が呼び出されます。

于 2012-06-22T11:43:27.640 に答える