gpt4 book ai didi

android - 将 xml 用于第二个 Activity 的问题(R.id 问题)

转载 作者:行者123 更新时间:2023-11-30 03:51:52 24 4
gpt4 key购买 nike

大家好,我是 Android 编程的新手,遇到问题需要帮助。

所以我将使用官方 android 网站用于训练的第一个应用程序 (http://developer.android.com/training/basics/firstapp/starting-activity.html)

我对创建第二个 Activity 部分感到困惑。因此,在他们通过 Intent 后,他们使用 java 代码(而不是 XML)创建了一个新的 TextView,因此我尝试使用 xml 创建该 TextView。我在 xml 中为第二个 Activity 创建了一个新的 TextView,我给它一个像这样的 id:

<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context=".DisplayMessageActivity" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"
android:id="@+id/new_Text"/>

</LinearLayout>

这是第二个 Activity 的 java 代码:

package com.example.myfirstapp;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.MenuItem;
import android.widget.TextView;
import android.support.v4.app.NavUtils;

public class DisplayMessageActivity extends Activity {

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

// Get the message from the intent
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

// Create the text view
TextView textView = (TextView) findViewById(R.id.new_Text);
textView.setTextSize(40);
textView.setText(message);

// Set the text view as the activity layout
setContentView(textView);

// Show the Up button in the action bar.
// getActionBar().setDisplayHomeAsUpEnabled(true);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}

}

在我更改之前,所有代码都运行良好。我变了

TextView textView = new TextView(this);

到:

TextView textView = (TextView) findViewById(R.id.new_Text);

但出于某种原因,它无法找到 new_Text 并且 Eclipse 仅建议来 self 的 main.xml 的 id。为什么会这样?是因为 R.id.blabla 只从 main.xml 获取 id 吗?如果它们不是来自 main.xml,我是否被迫使用 java 代码进行布局?

最佳答案

这篇文章中有很多困惑,但对于初学者来说:

您希望最终对用户可见的每个 Activity 都有自己的 XML 布局。如果您开始一个新的 Android 项目,它会默认为您提供位于 res>layout 文件夹中的 1 个 XML 布局和 1 个 Activity ,默认情况下将作为您的用户面向视觉 Activity 。

为了您的目的,一些简单的方法可以确定一个 Activity 是否是一个“视觉” Activity ,包括:

*它扩展了 activity 或其他一些 android 父类(super class)*它有一个“onCreate 方法(通常位于类的顶部)*在 onCreate 方法中有一行代码称为 setContentView,看起来像这样。

setContentView(R.layout.httpex);

setContentView 方法很重要,因为它有点像 Activity 和 xml 布局之间的粘合剂。在 R.layout.___ 之后是您要使用的 XML 布局的名称。

只有在您将内容 View 设置为适当的 View 后,您才能使用您创建的 ID 将您的 xml 布局中的元素或“ View ”链接到您的 Activity 。像这样

TextView textView = (TextView) findViewById(R.id.new_Text);

如果将内容 View 设置为 httpex.xml ,则只能链接到 httpex.xml 等内部的 View ...

我为 newbs bc 准备了一个 spft 点,因为这群人的无知对新鲜血液来说是多么糟糕,他们忘记了开始时的艰辛,并开始觉得所有这些都是常识和显而易见的,但如果我是你我会先去 thenewboston[dot]com 观看整个系列,然后再在这里发布许多类似的问题,这样你就不会被激怒了。

关于android - 将 xml 用于第二个 Activity 的问题(R.id 问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14030559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com