当前位置: 代码迷 >> Android >> 如何在新活动中将Intent字符串传递给XML小部件?
  详细解决方案

如何在新活动中将Intent字符串传递给XML小部件?

热度:45   发布时间:2023-08-04 11:09:19.0

我正在developer.android.com上关注“构建第一个应用程序”的教程,并且对如何在活动和XML布局之间传递信息有疑问。

我为每个活动都有一个布局:

左侧的一个是主要活动,而右侧的一个是按下“发送”按钮时开始的次要活动。

我希望应用程序将输入到主活动中的EditText小部件的消息传递给辅助活动中的TextView,同时保持辅助活动中当前具有的图片和背景格式。

developer.android站点上“构建您的第一个应用程序”教程的“启动另一个活动”部分仅显示了如何使用Java中定义的TextView将消息传递到辅助活动,而无视XML布局。

如何获取消息以转发到XML布局,或者如何将用Java定义的TextView和XML布局结合在一起?

很抱歉出现了巨大的转储,但是此站点现在不允许我发布两个以上的链接。

我尝试在该活动java文件中引用辅助活动的TextView,然后从那里设置文本,但是这样做时程序崩溃。

任何帮助,将不胜感激。 谢谢!

而不是在第二个活动中创建一个全新的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);
}
  相关解决方案