#android #android-webview
#Android #android-webview
Вопрос:
У меня проблема с моим webview и пользовательской домашней страницей. Я хочу, чтобы пользователь вводил URL-адрес на странице настроек, и поэтому он автоматически становится домашней страницей webview.
Вот мой preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="URL"
android:key="URL_CAT">
<EditTextPreference
android:key="URL_HERE"
android:title="School/Uni URL"
android:summary="Your School's Homepage"
android:dialogTitle="Moodle URL"
android:dialogMessage="Type your school's URL for a shortcut."
android:defaultValue="http://" />
</PreferenceCategory>
</PreferenceScreen>
Вот мой WebActivity.java
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.webview);
WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress)
{
activity.setTitle("Loading...");
activity.setProgress(progress * 100);
}
});
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
{
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
});
webView.loadUrl("http://test.com"); <--- I need the user data here
}
Ответ №1:
Сначала вы должны создать действие, которое расширит PreferenceActivity — http://developer.android.com/reference/android/preference/PreferenceActivity.html В этом действии пользователь сможет ввести URL.
В WebActivity добавьте код
SharedPreferences prefs = getSharedPreferences();
try {
url = prefs.getString(KEY, defaultValue).toString();
} catch (ClassCastException e) {
e.printStackTrace();
}