2017-05-05 35 views
-2

我是新來的Java和Android,其實我被困在一個問題,之前下投票或將其標記爲重複,盡力幫助我解決這個風暴...如何從一個方法傳遞一個字符串變量主要方法

我將說明我的概念。我有一個網頁瀏覽片段,我有一個按鈕。當用戶在瀏覽時單擊該按鈕時,當前網址將通過使用接口like this從片段傳遞到主要活動。我希望在下次用戶打開應用程序時(它應該加載上次從片段傳遞的網址)將傳遞的網址作爲默認地址。

這是怎麼怎麼我從片段傳遞Web地址URL主活動

@Override 
public void onHomeClick(String pasedurl) { 

    // now URL having the web address 
    URL= pasedurl; 

//trying to save URL for the next time use 

final String MY_PREFS_NAME = "MyPrefsFile"; 
    SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit(); 
    editor.putString("name", URL); 
    editor.commit(); 


    SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
    String restoredText = prefs.getString("name", null); 
    if (restoredText == null) { 


     String name = prefs.getString("name", "No name defined"); 

     Toast.makeText(getApplicationContext(), name, Toast.LENGTH_LONG).show(); 

    } 

下一步我把從主要活動傳遞一個URL字符串到下一次的網絡片段 所以它會打開它被保存在網絡地址之前

我這是怎麼傳遞的字符串URL從主要活動片段

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

    //passing the sting 'name' 

    Bundle bundle=new Bundle(); 
    bundle.putString("url", name); 
    final Radio radio=new Radio(); 
    radio.setArguments(bundle); 


    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 


    //other stuff 

    } 

,我接收網絡的片段像this`

final WebView view=(WebView) rootView.findViewById(R.id.webView); 
    String url = getArguments().getString("url"); 
    view.loadUrl(url); 

所以現在我會告訴你我想要什麼。我想從共享優先於bundle.so網頁片段通過保存的字符串URL可以捕獲它,或者我要讓敬酒從主要活動像

Toast.makeText(getApplicationContext(), name, Toast.LENGTH_LONG).show(); 

,所以我會去了解保存的網址是最後一次, 我怎樣才能做到這一點 ?請幫我........

+0

爲什麼要傳遞sharedpreferences捆綁訪問? sharedpreferences也可以訪問片段.. – ZeroOne

+0

我不知道,我該怎麼做?你可以幫忙嗎?@ –

+0

SharedPreferences shared = getActivity()。getSharedPreferences(MY_PREFS_NAME,MODE_PRIVATE); String url = shared.getString(「name」,null); – ZeroOne

回答

2

sharedpreferences也可以在片段

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.your_fragment, container, false); 
} 

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    final String MY_PREFS_NAME = "MyPrefsFile"; 
    SharedPreferences shared = getActivity().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
    String url = shared.getString("name",null); 

    final WebView view=(WebView) view.findViewById(R.id.webView); 
    view.loadUrl(url); 

} 
+0

不能解析符號「MY_PREFS_NAME –

+0

最終字符串MY_PREFS_NAME = 「MyPrefsFile」; – ZeroOne

+0

我只在oncreate'SharedPreferences shared = getActivity()。getSharedPreferences(MY_PREFS_NAME,MODE_PRIVATE); String url = shared.getString(「name」,null);'那很好嗎? –

1

Sharedpreferense將通過什麼樣的intire應用程序中的數據,這樣你可以在sharedpreferense添加具有相同的參考和regrab字符串變量。 所以只是把這個線要重新獲取數據: SharedPreferences首選項= getSharedPreferences(MY_PREFS_NAME,MODE_PRIVATE); String restoredText = prefs.getString(「name」,null);

+0

無法解析方法'getSharedPreferences(?,int)'和無法解析符號'MY_PREFS_NAME' –

+0

嘗試添加getActivity.getSharedPreference(); –

相關問題