【问题标题】:Blank Second Activity page on text input文本输入上的空白第二个活动页面
【发布时间】:2014-06-20 03:19:03
【问题描述】:

我是新来的,也是 Android 编程的新手。因此,我们将不胜感激任何帮助。

我正在运行一个 Android 应用程序(基本上是 developer.android.com 中给出的示例)。该应用程序的想法是让用户在第一个屏幕中输入一条消息,并在第二个屏幕中显示该消息。

我遇到的问题是,当我在“DisplayMessageActivity.java”的“OnCreate”中使用以下代码时,我的应用程序可以正常工作并完美地在第二个屏幕上显示文本。

public class DisplayMessageActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);

    setContentView(textView);
}

但是当我使用时,

setContentView(J.layout.activity_display_message);

而不是

setContentView(textView);

然后它什么都不显示,只是一个空白的第二个屏幕。

“activity_display_message.xml”的代码如下,

<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".DisplayMessageActivity" >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
     />
</LinearLayout>

所以我的问题是为什么 contentview 引用“active_display_message.xml”不起作用,这是显示文本的更好方法,在这里。

【问题讨论】:

    标签: android setcontentview


    【解决方案1】:

    好的,这就是你正在做的事情

    TextView textView = new TextView(this);
    

    这意味着您正在动态创建 TextView。当xml 文件中有TextView 时,您不需要这样做,除非您需要。出于您的目的,您不需要动态创建TextView

    您应该做的是使用您在xml 文件中创建的TextView。您可以使用findViewById(R.id.control_id) 在java 文件中通过id 访问您在xml 中定义的任何控件(TextView/EditText),并且id 将是唯一的。

    所以首先为你的 TextView 分配一个 id

        android:id="@+id/tv_1"  // assigning 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:orientation = "vertical" >
    
    <TextView
        android:id="@+id/tv_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />
    </LinearLayout>
    

    然后在您的活动中,执行以下操作

    public class DisplayMessageActivity extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_xml);    // set the view that you want to display
    
    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    
    TextView myTextView = (TextView) findViewById(R.id.tv_1)   // make sure the id is correct
    myTextView.setText(message);   // set the value 
    myTextView.setTextSize(40);    // you can dynamically modify the text size
    

    }

    【讨论】:

      【解决方案2】:

      我也是 Android 新手,所以我可能不知道这一点,但在我所阅读的所有内容中,我从未见过J.layout,而是R.layout

      【讨论】:

      • 对不起!我的错 !它的“R.layout”
      【解决方案3】:

      要在布局中使用TextView,首先需要在active_display_message.xml 布局中为TextView 设置android:id 属性。然后在活动中,使用findViewById 方法调用它。例如:

      在你的布局中:

      <TextView
          android:id="@+id/text_view_id"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
      />
      

      然后在你的活动中你需要调用它:

      TextView textView = (TextView) findViewById(R.id.text_view_id)
      

      【讨论】:

        猜你喜欢
        • 2019-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-13
        • 1970-01-01
        • 2016-03-21
        相关资源
        最近更新 更多