gpt4 book ai didi

java - 避免/阻止 fragment 在更改选项卡时刷新

转载 作者:太空宇宙 更新时间:2023-11-03 11:14:14 25 4
gpt4 key购买 nike

我知道有很多关于这个主题的问题,但我无法在我的应用程序中使用它。我的问题是。我有一个带有 4 个选项卡的应用程序。其中 3 个有一个 webView。每次我更改 Tabs 时,整个 fragment 都会重新加载。我希望它再次加载它。因此,当我失去互联网连接时,它仍会显示打开的页面。

这是我的主要 Activity :

public class MainActivity extends FragmentActivity {

private FragmentTabHost TabHost;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);
//instellingen laden
final SharedPreferences settings = getSharedPreferences("Leerling", 0);

//lln laden
int lln = settings.getInt("lln", 0);
if(lln == 0) {

//alert maken
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Welkom");
alert.setMessage("Vul je LLN in:");

// EditText maken
final EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
alert.setView(input);

//ga knop
alert.setPositiveButton("Ga", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//String text = input.getEditableText().toString();
int lln = Integer.parseInt(input.getEditableText().toString());
SharedPreferences.Editor editor = settings.edit();
editor.putInt("lln", lln);
editor.commit();
}
});
//stop knop
alert.setNegativeButton("Stop", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
android.os.Process.killProcess(android.os.Process.myPid());
return;
}
});

alert.show();
}

TabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
TabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

//tab1 toevoegen
TabHost.addTab(TabHost.newTabSpec("tab1").setIndicator("Rooster"), Tab1.class, null);

//tab2 toevoegen
TabHost.addTab(TabHost.newTabSpec("tab2").setIndicator("Pers"), Tab2.class, null);

//tab3 toevoegen
TabHost.addTab(TabHost.newTabSpec("tab3").setIndicator("Wijzig"), Tab3.class, null);

//tab4 toevoegen
TabHost.addTab(TabHost.newTabSpec("tab4").setIndicator("Extra's"), Tab4.class, null);
}

这是我的 Tab1:

public class Tab1 extends Fragment  {

private Bundle webViewBundle;
private WebView webViewRooster;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View View = inflater.inflate(R.layout.activity_tab1, container, false);

SharedPreferences settings = getActivity().getSharedPreferences("Leerling", 0);
int lln = settings.getInt("lln", 0);

webViewRooster = (WebView) View.findViewById(R.id.webViewRooster);
webViewRooster.setWebViewClient(new WebViewClient());

if (webViewBundle == null) {
Toast.makeText(getActivity(), "geladen voor eerste x", Toast.LENGTH_SHORT).show();
webViewRooster.loadUrl("http://www.idylank.x90x.net/rooster.php?lln=" + lln);
}
else{
Toast.makeText(getActivity(), "tweede of meer x", Toast.LENGTH_SHORT).show();
//webViewRooster.restoreState(webViewBundle);
}
return View;
}
public void onPause() {
webViewBundle = new Bundle();
webViewRooster.saveState(webViewBundle);
super.onPause();
}

我尝试了很多东西...请帮忙。

最佳答案

我知道这是一个疯狂的解决方法,但如果您试图为用户提供“上次查看的 HTML”,也许您应该考虑缓存已成功下载的 HTML,然后在再次下载失败时将此 HTML 设置回 WebView ?

防止重新加载可能更好,但如果您没有找到其他任何东西,请检查此链接以了解如何获取已下载 HTML 的副本:how to get html content from a webview?

关于java - 避免/阻止 fragment 在更改选项卡时刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19297816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com