如何将String变量从一个方法传递给main方法

时间:2017-05-05 03:38:45

标签: java android android-fragments sharedpreferences

我是java和android的新手,实际上我遇到了问题,在进行投票或将其标记为重复之前,试着帮我解决这个风暴......

我将描述我的概念。我有一个网页视图片段,我有一个按钮。当用户在浏览时单击按钮时,当前网址将通过使用接口like this从片段传递到主要活动。我想在下次用户打开应用程序时将传递的网址作为默认地址(它应该加载上次从片段传递的网址)。

这就是我如何将网址从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字符串传递给web片段 以便下次打开之前保存的网址

这就是我将字符串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

    } 

我正在接收像这样的网络片段

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

所以现在我会告诉你我想要什么。我想将保存的字符串url从共享首选项传递给bundle.so web片段可以捕获它,或者我想从主要活动中做吐司,如

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

所以我会知道最后一次保存的网址,我该怎么做?请帮帮我........

2 个答案:

答案 0 :(得分: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);

}

答案 1 :(得分:1)

Sharedpreferense将通过intire app获取数据,这样您就可以使用相同的引用添加sharedpreferense并重新调整字符串变量。 所以只需将此行放在您想要再次获取数据的位置: SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME,MODE_PRIVATE);     String restoredText = prefs.getString(“name”,null);