问题描述
我正在developer.android.com上关注“构建第一个应用程序”的教程,并且对如何在活动和XML布局之间传递信息有疑问。
我为每个活动都有一个布局:
左侧的一个是主要活动,而右侧的一个是按下“发送”按钮时开始的次要活动。
我希望应用程序将输入到主活动中的EditText小部件的消息传递给辅助活动中的TextView,同时保持辅助活动中当前具有的图片和背景格式。
developer.android站点上“构建您的第一个应用程序”教程的“启动另一个活动”部分仅显示了如何使用Java中定义的TextView将消息传递到辅助活动,而无视XML布局。
如何获取消息以转发到XML布局,或者如何将用Java定义的TextView和XML布局结合在一起?
很抱歉出现了巨大的转储,但是此站点现在不允许我发布两个以上的链接。
我尝试在该活动java文件中引用辅助活动的TextView,然后从那里设置文本,但是这样做时程序崩溃。
任何帮助,将不胜感激。 谢谢!
1楼
而不是在第二个活动中创建一个全新的TextView
:
TextView textView = new TextView(this);
您应该给第二个活动布局文件中的TextView
元素一个ID:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/yellow"
android:orientation="vertical" >
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:background="@color/white"
android:text="message" />
<ImageView
android:src="@drawable/open"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
然后,在设置了内容视图之后 ,您可以在第二个活动的代码中引用这个完全相同的TextView
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
Intent intent = getIntent();
String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);
// must call this after setting the content view;
// otherwise, textView will still be null.
TextView textView = (TextView) findViewById(R.id.text_view);
textView.setTextSize(40);
textView.setText(message);
}