0

設定に保存された URL に接続する Android 用の[非常に]シンプルなアプリを作成しました。アプリで新しいアクティビティ/レイアウトを開いて URL を入力して保存することができたので、finish(); を使用します。メイン画面(WebView)に戻ります。

新しい URL を設定した後、WebView を更新するにはどうすればよいですか?

[編集]

設定が保存されていないと思います:

mySettings.java

package com.rarecreativegroup.dcm1config;

import android.app.Activity;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.Window;
import android.webkit.WebView;
public class mySettings extends Activity {
    public void onCreate (Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.menu_layout); 




        findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {


            public void onClick(View v) {

                Editor editor = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit();
                String string = getString(R.string.ipaddress);
                editor.putString("ipaddress", string);              
                editor.commit();
                WebView webViewer = (WebView)findViewById(R.id.webview);
                //webViewer.loadUrl(string);
                finish();
            }
        });
    }

    }

mainActivity.java

package com.rarecreativegroup.dcm1config;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.webkit.WebView;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {
    public static final String PREFS_NAME = "preferences";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);

        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        String uri = settings.getString("ipaddress", "");
        WebView webview = new WebView(this);
        webview.loadUrl(uri);
        setContentView(webview);
        //setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item){
        switch (item.getItemId()) {
            case R.id.settings:
                startActivity(new Intent(this, mySettings.class));
                return true;
            case R.id.refresh:
                SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
                String uri = settings.getString("ipaddress", "");
                WebView webview = new WebView(this);
                webview.loadUrl(uri);
                setContentView(webview);
            default:
                return super.onOptionsItemSelected(item);
        }

    }


    }

res/xml/preferences.xml

 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
        <PreferenceCategory 
        android:title="IP Settings"
        android:key="ip_settings">

        <EditTextPreference
            android:key="ipaddress"
            android:title="DCM1 IP" 
            android:summary="Define the IP address of the DCM1"
            android:dialogTitle="DCM1 IP Address"
            android:dialogMessage="Supply IP Address"    
            android:defaultValue="http://192.168.6.117/" />

    </PreferenceCategory>
    </PreferenceScreen>

何か案は?

4

2 に答える 2

0

あなたが抱えている問題は、2 つの異なる SharedPreferences を参照していることです。設定アクティビティのデフォルトの共有設定に保存していますが(これは良いことです)、独自のカスタム設定から取得しています。同じデフォルトの共有設定を両方とも呼び出すだけです。これがあなたがする必要があることです:

変化する

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

あなたのmainActivityで:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

および変更:

Editor editor = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit();

mySettings アクティビティで次のことを行います。

Editor editor = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit();

そして、すべてが正常に機能し始めるはずです。

于 2012-07-13T17:53:16.457 に答える
0

Activity クラス内でのみ Web ビューの参照を取得するか、次のようにしてアクティビティの参照を取得できます。

WebView webView = (WebView)findViewById(R.id.my_web_view);

次に、Web ビューをリロードするには:

webView.loadUrl("http://www.websitehere.php");

またはもっと簡単に:

webView.reload();
于 2012-07-13T16:02:25.020 に答える