0

我按照链接 http://developer.android.com/training/basics/firstapp/starting-activity.html

将字符串从一个活动发送到另一个活动。第二个活动中有一个文本视图,我尝试显示第一个活动的字符串。但应用程序在该行终止,

主要活动

Intent intent=new Intent(this,DisplayActivity.class);
    intent.putExtra(EXTRA_MESSAGE,Data);

    startActivity(intent);

显示活动

TextView listname;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    listname=(TextView) findViewById(R.id.msg);

     Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    listname.setText(message);
    setContentView(R.layout.activity_display);

应用程序终止在行listname.setText(message);

4

2 回答 2

2

您需要更改顺序。setContentView()必须在开始初始化小部件之前调用。

setContentView(R.layout.activity_display);
listname = (TextView) findViewById(R.id.msg);

正是文档所说的:

setContentView 方法从布局资源中设置活动内容。资源将被膨胀,将所有顶级视图添加到活动中。

换句话说,setContentView() 方法是布局膨胀,它创建包含在布局中的 UI 元素的所有实例,然后将布局附加到 Activity。所以首先必须调用 setContentView 然后初始化 UI 元素。

于 2013-03-16T12:35:15.393 回答
1

以这种方式在 DisplayActivity 中尝试相同的代码..

TextView listname;

@Override

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display);
listname=(TextView) findViewById(R.id.msg);

Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
listname.setText(message);
于 2013-03-16T12:50:37.710 回答