如何保存通用字符串?

时间:2014-05-16 19:41:48

标签: android string button android-edittext android-tabhost

在我的标签主机上,无论如何我可以通过单击选项卡5中的按钮从编辑文本中保存值,然后在标签1-4中使用该值?

我试过这个,但我很确定这只会将它保存到标签1。

public class Tab5 extends Activity{


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tab5);

    Button btnGo;
    btnGo = (Button) findViewById(R.id.button1);
    final EditText edit = (EditText) findViewById(R.id.editText1);

    btnGo.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) { 
            SharedPreferences myPref = getSharedPreferences("YourPrefrenceName",Context.MODE_PRIVATE);

            SharedPreferences.Editor editor = myPref.edit();
            editor.putString("YourStringKey",edit.getText().toString());
            editor.commit();
                        }

标签1

public class Tab1 extends Activity {

private WebView webView;

public final static String URL = "http://outputapps.com/build/infoview.php?id=";

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tab1);

    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    SharedPreferences myPref = getSharedPreferences("YourPrefrenceName",Context.MODE_PRIVATE);
    String mText =   myPref.getString("YourStringKey","");
    webView.loadUrl(Tab1.URL + mText);
    webView.setWebViewClient(new MyAppWebViewClient());
    WebSettings settings = webView.getSettings();
        settings.setLoadWithOverviewMode(true);
        settings.setUseWideViewPort(true);

}

3 个答案:

答案 0 :(得分:2)

您可以使用SharedPrefrences随时存储原始数据值:

存储:

SharedPrefrences myPref = getSharedPrefrences("YourPrefrenceName",Context.MODE_PRIVATE);

SharedPrefrences.Editor editor = myPref.edit();
editor.putString("YourStringKey",editText.getText().toString());
editor.commit();

用于检索:

SharedPrefrences myPref = getSharedPrefrences("YourPrefrenceName",Context.MODE_PRIVATE);
String mText =   myPref.getString("YourStringKey","");

现在您可以在任何地方使用mText。

答案 1 :(得分:1)

您可以使用以下三种保存方式: -

  1. 在一个像Constants.java这样的单独类中创建一个像public static String etxString=null;这样的变量,现在在你有编辑文本的活动中(第五个标签),如果你想要的话,你现在就像Constants.etxString=edit.getText().toString();一样初始化它在标签1-4中使用它只是像这样try{Toast.makeText(this,Constants.etxString,Toast.LENGTH_SHORT).show();}catch(Exception e){e.printStackTrace();}使用它注意到我已经用try catch包围,因为直到第5次没有被调用,这将抛出nullpointer异常,因为字符串是null。
  2. 请记住,如果您退出应用程序(据我所知),这不会保证值存在,但这将是最快的方法。

    1. 第二个选项是使用sharedpreference store并检索String。

    2. 将是DB。

    3. 将是档案。

    4. 据我所知,这些都是关于存储的所有选项......

      至于比较和刷新,你可以有两个字符串静态或共享偏好,一个将保持现值,或者总是在活动之外更改,一个将用于保存前一个网址,这将改变webview活动和在包含webview的活动的onResume()中,您将执行if(!currentUrl.equals(dynamicUrl)) refreshWebView();之类的操作,其中refreshWebView()是一个自定义函数,其中重新加载了webview ...

      希望它有助于thx .....

答案 2 :(得分:-1)

您可以在Tab1中创建EditText,如:

  protected static EditText editText;

它会让它在其他活动中可见,然后在你的标签里做一些谎言这个

  String text = Tab5.editText.getText().ToString(); 

你可以按照你想要的方式和你想要的地方做到这一点