【问题标题】:GetExtra PutExtraGetExtra PutExtra
【发布时间】:2013-10-17 18:57:32
【问题描述】:

好的,所以我想使用 getextrand putextra 方法将值从一个活动传递到另一个活动。

在我想要接收数据的第二个活动中,充满了按钮和文本视图等内容。我想将从 MainActivity 收到的某个值设置为特定的文本框。

setContenView(R.id.intent)

是显示字符串的最简单的一种方法,但是如果我想将此值设置为一个或多个文本视图怎么办。我的代码在这里

主活动

package com.prashant.cookbook;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends Activity {


static String Message_send="Prashant";

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

    EditText et=(EditText)findViewById(R.id.editText1);
    Button send=(Button)findViewById(R.id.send);

    final Intent msg_send= new Intent(this,Second.class);
    String MSG= et.getText().toString();
    msg_send.putExtra(Message_send, MSG);
    send.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            startActivity(msg_send);


        }
    });


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

第二次活动

package com.prashant.cookbook;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.widget.TextView;

public class Second extends Activity {

private TextView tv;
private Intent rcv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    tv = (TextView) findViewById(R.id.msg_show);
    rcv = getIntent();
    String Show_msg;
    Show_msg=rcv.getStringExtra(MainActivity.Message_send);
    tv.setText(Show_msg);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.second, menu);
    return true;
}

}

但是当我运行这段代码时,我只得到一个空白的第二个 Activity 甚至没有默认文本

【问题讨论】:

  • 你在activity_second.xml里面放了什么?
  • 一个文本视图。

标签: java android methods


【解决方案1】:

在按钮单击时获取用户在 EditText 中输入的值,然后使用 msg_send.putExtra 将值放入 Intent 中:

send.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

       String MSG= et.getText().toString();  //<< get value from EditText here
       msg_send.putExtra(Message_send, MSG);            
       startActivity(msg_send);
    }
});

【讨论】:

  • @codeMagic 是的。它提高了代码的可读性并且更不容易出错
  • @blackbelt 好的,感谢您的回复。我想我在想,如果 Activity 完成了,你就不会引用它了……
  • @codeMagic 只要应用程序的进程存在,java 中的静态字段就会存在
  • @blackbelt 我知道 Java 是这样工作的。我想我认为Activity 在Android 框架中是不同的。不知道为什么我会这么想,但感谢您清理它!我想我会从现在开始这样做。
  • @codeMagic stackoverflow.com/questions/2475978/… 这应该会有所帮助
猜你喜欢
  • 2014-02-27
  • 2011-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多