【问题标题】:Sending data without having to start a new Activity无需启动新活动即可发送数据
【发布时间】:2015-04-16 20:43:19
【问题描述】:

所以基本上我的问题只是在标题中解释了。如何在活动之间发送数据而不必启动接收数据的活动。这是我的代码:这是发送数据的主要活动:

public class MainActivity extends Activity {

private EditText mainedit1;
private TextView maintext1;
private Button   mainadd1;
private Button   maindone1;
@Override

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
maindone1=(Button) findViewById(R.id.maindone);
mainedit1=(EditText)findViewById(R.id.mainedit1);
maintext1=(TextView)findViewById(R.id.maintext1);
mainadd1=(Button)findViewById(R.id.mainadd);

    mainadd1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

           String test1= mainedit1.getText().toString();
           Intent intent = new Intent(MainActivity.this,test.class);
           intent.putExtra("word",test1);
           startActivity(intent);
        }
    });

这是接收数据的活动:

public class test extends Activity {
TextView testtext;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fortest);
    testtext=(TextView)findViewById(R.id.testtext);
    Intent intent = getIntent();
    String Word = intent.getStringExtra("word");
    testtext.setText(Word);
}

所以我在这里做的是发送数据同时也开始活动,这不是我想要分享的。请告诉我如何修复我的代码?

【问题讨论】:

  • 您可以将数据保存到本地文件中,然后在其他 Activity 中读取数据...您为什么要这样做?
  • 你确定你需要一个活动吗?通常activity包含用户交互的UI,如果你需要在后台做一些操作,你最好使用服务。
  • 我该怎么做?我想要做的是将 EditText 中的文本发送到其他活动。
  • 是的,我希望文本在通过edittext写入第一个活动后显示在第二个活动中。就像我想要 Ui 一样
  • 为什么不能创建一个新的活动并通过putExtra() 有什么限制?

标签: java android android-intent sharedpreferences


【解决方案1】:

您似乎只是想保存一个字符串以供以后使用。在您的 MainActivity 中,只需执行以下操作即可保存字符串:

getSharedPreferences("my_prefs", Context.MODE_PRIVATE).edit().putString("word", test1).commit();

然后,当您准备好在测试活动中检索它时,只需这样做:

String Word = getSharedPreferences("my_prefs", Context.MODE_PRIVATE).getString("word", null);
testtext.setText(Word);

【讨论】:

  • 请原谅我的愚蠢,但“编辑”正在读取错误。你能写完整的吗?我将非常感激。
  • 谢谢 :) 。以及如何在测试活动中通过 sharedperefecnes 检索我保存在 mainactivity 中的文本?
  • 这是我回答的第二部分。你这样做:getSharedPreferences("my_prefs", Context.MODE_PRIVATE).getString("word", null);
  • 是的,我如何将它应用到 textview ?就像在我的例子中testtext.setText(what ?)
  • 编辑我的回答来回答你的问题
【解决方案2】:

你可以使用android的sharedprefrence下面你可以实现的代码 在您的 MainActivity 中,只需执行以下操作即可保存字符串:

getSharedPreferences("my_prefs", Context.MODE_PRIVATE).edit().putString("word", test1).commit();

然后,当您准备好在测试活动中检索它时,只需这样做:

String Word = getSharedPreferences("my_prefs", Context.MODE_PRIVATE).getString("word", null);
testtext.setText(Word);

                            OR 

通过创建静态变量发送数据而无需启动新的 Acitivity 例如。

public class First_Activity extends Activity {
 public static String USER_FORMATED_NUMBER = null;

 USER_FORMATED_NUMBER="Data you want to pass"; 
}

public class Second_Activity extends Activity {
 String data=First_Activity.USER_FORMATED_NUMBER; 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多