2017-05-05 83 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(); –

相关问题