【问题标题】:Passing value of varibale using putextra between two activities在两个活动之间使用 putextra 传递变量的值
【发布时间】:2013-11-21 04:08:20
【问题描述】:

我在第一个活动中有两个活动我将字符串值存储在变量中我正在使用意图并转到第二个活动我想获取存储在变量中的值并将其传递给 edittext 谁能帮我解决这个问题

第一个活动---有意图的点击

but1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent mail = new Intent(
                        "com.ideals.ideal.MAIL1");
                mail.putExtra("Value1", "problem was asked in stackowerflow and i am waiting for a reply");
                startActivity(mail);
            }
        });

第二次活动

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mail1);
    sendEmail = (Button) findViewById(R.id.bSentEmail);
    doc = (EditText) findViewById(R.id.etdoc);

    Bundle extras = getIntent().getExtras();
    value1 = extras.getString("value1");
    doc.setText(value1);
    abcPref = getSharedPreferences(FILE1, 0);
    Bigboss = abcPref.getString("bigboss", "");

【问题讨论】:

  • 更改String value1 = extras.getString("Value1");请先搜索再询问。关于这个主题有很多问题和答案
  • geet 我仍然没有收到文本——“在 stackowerflow 中提出了问题,我正在等待回复”——在第二个活动中
  • 您在第二个活动中调用initializeVars() 的位置?
  • oncreate setcontent view 之后
  • 调试你在initializeVars()中得到的代码吗?正如我认为你以错误的方式启动意图。

标签: android


【解决方案1】:

您的意图键值区分大小写,因此请始终确保您定义的用于在意图中传递值的键在获取值时必须与我相同。

在您获得价值时,您的密钥是 Value1 而不是 value1。写V 大写而不是v

Bundle extras = getIntent().getExtras();
value1 = extras.getString("Value1");

【讨论】:

  • 非常感谢我得到了一些值,但是整个字符串只被截断为前 20 个字母
  • @Shweta 截断是什么意思?
  • 应该是文字太长的缘故。它必须显示,但由于编辑文本不能显示整个字符串。要查看整个文本,请在您的 xml 布局文件中添加属性 android:inputType="textMultiLine"。 @Shweta
  • 感谢 Grlshu,我还注意到我在 xml 文件中将最大长度设置为 20 个字母,抱歉弄错了
  • grlshu 能否请你投票我的问题,以便我得到积分
【解决方案2】:

更新您的onClick 代码如下(您创建意图的方式不是最好的方式):

but1.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent mail = new Intent(this, MAIL1.class);
        mail.putExtra("Value1", "problem was asked in stackowerflow and i am waiting for a reply");
        startActivity(mail);
    }
});

您应该使用与putExtra 中相同的密钥:

String value1 = extras.getString("Value1");
doc.setText(value1);

【讨论】:

  • 这是错误的,因为 Eclipse 说它应该是可变的
  • 什么应该是可变的?
  • 非常感谢我得到了一些值,但是整个字符串只被截断为前 20 个字母
  • (this, MAIL1.class); 'this' 应该是一个变量
  • 我明白了。将this 替换为<ActivityName>.this 例如:FirstActivity.this
【解决方案3】:

Intent Extras 是键值对。给一个键,你得到相应的值。看看下面的例子:

在第一个活动中:

 Intent mail = new Intent(FirstActivity.this, SecondActivity.class);// This is the right way to call Activity inside your own Application
                mail.putExtra("Key1", "Value1");
                mail.putExtra("Key2", "Value2");
                mail.putExtra("Key3", "Value3");
                startActivity(mail);

现在,在 SecondActivity 内部,

 String value1 =getIntent().getStringExtra("Key1");
 String value2 =getIntent().getStringExtra("Key2");
 String value3 =getIntent().getStringExtra("Key3");

【讨论】:

    猜你喜欢
    • 2013-08-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    相关资源
    最近更新 更多