2012-07-13 27 views
0

我已經做了[很]簡單的Android應用程序,其連接到保存在偏好的URL。我已經能夠讓應用程序打開一個新的活動/佈局來輸入URL並保存它,然後我使用finish();返回到主屏幕(WebView)。刷新網頁流量節省

我如何獲得的WebView設置新的URL後刷新?

[編輯]

我不認爲我的喜好被保存:

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> 

任何想法?

回答

0

你可以得到你的Web視圖的參考之內你的Activity類,或者將您的活動的參考,這樣做:

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

,然後重新加載您的Web視圖:

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

或者更簡單地說:

webView.reload(); 
+0

我不認爲正在設置/檢索我的首選項: – user1474819 2012-07-13 16:12:04

+0

編輯上面的問題 – user1474819 2012-07-13 16:21:55

+0

@ user1474819請檢查我的答案,以查找您未在相同位置存儲和檢索的問題:http://stackoverflow.com/ a/11475745/960048 – 2012-07-13 17:53:58

0

您所遇到的問題是,您將可以參考兩幅不同ent 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(); 

,一切都應該開始正常工作。

+0

非常感謝。我仍然遇到問題,我用你建議的更改替換了代碼,但我似乎可以使其工作。讓我知道如果你需要什麼東西上面添加你幫我 – user1474819 2012-07-13 20:45:41

+0

你有沒有在日誌語句把,看看有什麼URI其檢索? 另外,您應該需要創建新的Web視圖並將其重置爲contentView。取而代之的是保留對onCreate中創建的webview的類的引用,並且只調用'mWebView.loadUrl(uri);' – 2012-07-13 21:17:44

+0

另外,你知道你從你的strings.xml文件中取出ipaddress而不是從EditTextPreference中取出, ? R.string.ipaddress是res/values /文件夾中strings.xml文件中的一個id。 – 2012-07-13 21:20:23