1

我有一个应用程序,在第一个活动中询问第二页上的人名它在句子中显示名称我想在第三个第四或第 9 个活动中使用该名称我如何正确声明它(公开?)并调用它我何时何地需要它?这是我发送它的代码

主要的

public class MainActivity extends Activity {
Button ok;
EditText name;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    name=(EditText)findViewById(R.id.editText);
    Typeface font_a = Typeface.createFromAsset(getAssets(),"fonts/MarkerFelt.ttf");
    name.setTypeface(font_a);
    ok=(Button)findViewById(R.id.button);
       Typefacefont_b=Typeface.createFromAsset(getAssets(),
"fonts/SignPaintersGothicShaded.ttf");
    ok.setTypeface(font_b);

    ok.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            String nameStr = name.getText().toString();

            Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
            intent.putExtra("NAMEDATA",nameStr);
            startActivity(intent);

        }
    });

}

这是接收它的活动 2

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    t = (TextView)findViewById(R.id.textView3);
    Typeface font_b = Typeface.createFromAsset(getAssets(),"fonts/MarkerFelt.ttf");
    t.setTypeface(font_b);
    String n = this.getIntent().getStringExtra("NAMEDATA");
    t.setText(n);

所以请问我将如何重用这个?

4

3 回答 3

3

使用 SharedPreferences 保存名称或您需要的任何变量,然后在需要时读取。首先,在 MainActivity 中创建将用作首选项文件名的全局:

public static final String PREFS_NAME = "MyPrefsFile";

然后,要保存:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("name", name);
editor.commit();

装载:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
String name = settings.getString("name", "John");

保存后,每个活动都可以访问首选项。

因此,在您的情况下,按下确定按钮时保存名称:

ok.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View arg0) {
        String nameStr = name.getText().toString();

        SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = settings.edit();
        editor.putString("name", nameStr);
        editor.commit();

        Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
        startActivity(intent);

    }
});

然后阅读它:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);

    t = (TextView)findViewById(R.id.textView3);
    Typeface font_b = Typeface.createFromAsset(getAssets(),"fonts/MarkerFelt.ttf");
    t.setTypeface(font_b);

    SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
    String n = settings.getString("name", "defaultName");
    t.setText(n);

你可以在你需要的每一个活动中做类似的事情。请参阅此处的文档。

于 2014-01-10T22:39:48.443 回答
1

您有许多不同的方法来在活动之间共享数据。我会说你使用哪一个取决于数据的最终来源和目的地。

  • 传递意图- 这是您当前使用的方法。要继续,只需继续将名称传递给下一个意图。
  • Save to SharedPreference - 此方法将信息保存到应用程序的“首选项”文件中。如果用户正在设置配置文件或其他半固定信息,这将很有用。
  • 将其写入数据库- 在这里,您将为用户信息创建一个新的 SQLite 表,并向其写入新行以获取名称、密码和其他信息。这有更多的开销,并且只有在同一个应用程序中有多个用户时才真正有用
  • 保存到单例- 在这种情况下,您将创建一个具有可以设置的公共属性的静态类。这将是最不利的,所有信息在应用程序关闭时都会丢失,但对于跨许多活动的临时创建和保留可能很有用。警告:糟糕的编程会使单身人士成为噩梦
于 2014-01-10T22:58:53.417 回答
0

创建从应用程序类扩展的类。在该类中实现 setter 和 getter,例如,

  public class GlobalClass extends Application {

            //create setters and getters here

        public void setUserInfo(String userInfo) {

     }
        public void getUserInfo() {
          return userInfo;
     }

   }

然后您可以在任何活动中使用它,例如,

           GlobalClass app = (GlobalClass ) getApplication();
           app.getUserInfo();
于 2014-01-10T22:58:22.493 回答