我有2项活动活动A & 活动B (webview) 我想要做的是,当webview不能再返回时,它会显示活动A并再次按下提示退出
以下是活动A:
import com.jeumont.app.R;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
public class frontpage extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.frontpage);
}
}
包含背压功能的webview:
public class webview extends Activity {
private WebView webView;
@SuppressLint("SetJavaScriptEnabled") @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Init Barre de chargement
final ProgressDialog pd = ProgressDialog.show(this, "", "Chargement en cours", true);
setContentView(R.layout.activity_webapp);
webView = (WebView) findViewById(R.id.webView_web_app);
webView.getSettings().setJavaScriptEnabled(true);
String url = getIntent().getStringExtra("url");
webView.loadUrl(url);
webView.setWebViewClient(new WebViewClient()
{
//On enleve le progress quand la page est chargée
public void onPageFinished(WebView view, String url)
{
pd.dismiss();
super.onPageFinished(view, url);
}
所以我尝试了几件事来完成这项工作。
public void onBackPressed (){
if (webView.isFocused() && webView.canGoBack()) {
webView.goBack();
}
super.onBackPressed();
按预期工作,webview会返回,当它无法再切换回活动A时,如果再次按下则会离开应用
我实际上在使用:
public void onBackPressed (){
if (webView.isFocused() && webView.canGoBack()) {
webView.goBack();
}
else
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Voulez vous quitter ?")
.setCancelable(false)
.setPositiveButton("Oui", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
})
.setNegativeButton("Non", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
提示工作正常,但是当webview无法再返回时会弹出,如果是,则返回活动A
当当前活动是A而不是webview时,如何弹出此提示? 我真的不知道如何做到这一点,我听说过片段,这是怎么做的?
希望这很清楚。答案 0 :(得分:0)
您应该在活动中覆盖onBackPressed()。
在活动A中:
@Override
public void onBackPressed (){
//AlertDialog to exit the app.
}
在活动B中:
@Override
public void onBackPressed (){
if (webView.isFocused() && webView.canGoBack()) {
webView.goBack();
}else{
super.onBackPressed();
}
}
答案 1 :(得分:0)
在您的活动A中,覆盖onBackPressed
并输入显示提示的代码:
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Voulez vous quitter ?")
.setCancelable(false)
.setPositiveButton("Oui", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
})
.setNegativeButton("Non", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
从else块中的webview活动中删除相同内容。