1

我已经阅读了其他解决方案。没有 import.filename.R,我所有的 .xml 标题都是小写的,我已经清理了项目。我尝试重新创建它,但没有一个奏效。我文件中的所有“R.”都出错了,无法解析为变量。我有五个不同的 XML 文件,所以我只展示其中几个,然后是 java:

活动主:

<TextView
    android:id="@+id/categoryTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="30dp"
    android:layout_marginTop="22dp"
    android:text="@string/cat" />

<RadioGroup
    android:id="@+id/radioGroup1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/categoryTextView"
    android:layout_below="@+id/categoryTextView"
    android:layout_marginTop="14dp" >

    <RadioButton
        android:id="@+id/bkRadio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="@string/bekind" />

    <RadioButton
        android:id="@+id/oldmcRadio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/oldmc" />


</RadioGroup>

<Button
    android:id="@+id/chooseButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/radioGroup1"
    android:layout_below="@+id/radioGroup1"
    android:layout_marginTop="18dp"
    android:text="@string/choose"
    android:onClick="buttonclick" />

</RelativeLayout>

说好话:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

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

<EditText
    android:id="@+id/nounKindEditText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:ems="10" />

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

<EditText
    android:id="@+id/nounpKindEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:ems="10" />

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

<EditText
    android:id="@+id/nounKindEditText2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:ems="10" />

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

<EditText
    android:id="@+id/placeKindEditText2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:ems="10" />

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

<EditText
    android:id="@+id/@+id/adjKindEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:ems="10" />

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

<EditText
    android:id="@+id/nounKindEditText3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:ems="10" />

<Button
    android:id="@+id/enterButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="buttonclick2"
    android:text="@string/ent" />

</LinearLayout>

爪哇:

package com.deitel.madlibs;

import android.os.Bundle;
import android.app.Activity;
import android.widget.*;
import android.view.View;
import android.view.Menu;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends Activity {
//Global variable
    double bk;
    double oldmc;
    private Button choose;  // creates a button 

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

        choose = (Button) findViewById(R.id.chooseButton);

        //Start with first screen
        setContentView(R.layout.activity_main);
    }

  //buttonclick for form 1
    public void buttonclick(View view){

        RadioButton bk = (RadioButton) findViewById(R.id.bkRadio);
        RadioButton oldmc = (RadioButton) findViewById(R.id.oldmcRadio); 

         if(bk.isChecked())
        {
            //switch views to screen 2
               setContentView(R.layout.bekindwords);  
        }
   else if(oldmc.isChecked())
        {
           //switch views to screen 3
           setContentView(R.layout.mcdwords);
        }}

    // buttonclick for bekindwords
         public void buttonclick2(View view){
                setContentView(R.layout.bekindadlib);
         }
    // buttonclick for mcdwords
         public void buttonclick3(View view){
                    setContentView(R.layout.mcdadlib);
         }

} 
4

4 回答 4

2

实际上,我今天刚刚遇到这个问题,并且在过去一个小时左右一直困扰着我。在我的代码中进行了一些挖掘,但最终我找到了问题所在。在我第一次创建项目的早期,Eclipse 添加了一个空白活动和一些基本资源。创建的资源之一是一个奇怪的 menu.xml 文件,它引用了我在创建项目时最初删除的字符串。由于 XML 布局文件中的问题会阻止构建应用程序,因此我只是在字符串 XML 值文件中重新添加了正在调用的字符串。

所以我在解决我的问题时学到的真正教训是,如果你的 R 文件没有生成,那么很可能是由于 XML 文件中的一些问题阻止了你的应用程序的构建。

于 2012-12-01T21:00:52.197 回答
1

尝试导入 com.deitel.madlibs.R,清理,删除导入。当 R 上出现 Eclipse 错误时,我会做一些接近它的事情,尽管可能并不完全如此。

于 2012-12-01T19:05:52.187 回答
0

我在(孤单)希望其他有资源类问题的人可能会发现这个。

没有什么神秘的

安卓.R

, 或者

your.packagename.com.R

.

当 AAPT 编译您的应用程序时,它会生成 R.java。您可以在项目结构根目录下的 gen 文件夹中看到它。它只是定义了一系列public static final int引用项目中资源的 s,例如可绘制对象、字符串、布局视图等,以便您可以在代码中使用名称来引用它们。

因此,R.java 只是一个类,就像任何其他 Java 类一样。java 文件与您使用的所有其他类一起编译到您的应用程序中。

反过来,它对每种资源类型都有内部类。例如:

package com.company.example

public final class R {

    public static final class drawable {
        public static final int icon=0x7f020005;   
    } 
}

在这里,我的可绘制对象中有一个名为“icon”的图标。在我的代码中,我可以使用findViewById(R.drawable.icon).

再看看上面的代码,很明显发生了什么。它编译为findViewById(0x7f020005);

出现这个问题是因为很多事情都可能导致 R.java 的生成失败,最常见的是布局 XML 中的错误。由于未生成 R.java,因此在编译您的应用程序时,编译器会尝试解析您对R.

再考虑一下findViewById(R.drawable.icon)。您的 R.java 尚未生成,但 Android 在android.R. 编译器将帮助(或不)为您解析引用并将 android.R 添加到您的导入中。然后它会尝试 compile findViewById(R.drawable.icon),这是有效findViewById(android.R.drawable.icon)的,并且由于默认的 Android 类没有 drawable.icon,因此编译失败。

要修复它,只需要两件事。

  1. 从导入中删除 android.R
  2. 查找并修复导致 R.java 生成失败的问题

根据我的经验,布局 XML 中的 XML 错误并不总是在 IDE 中正确显示。当我遇到这个问题时,我最终会查看我的版本历史,查看最近的更改和/或打开每个布局 XML 并检查预览中的错误。

希望这至少对某人有所帮助...

于 2012-12-01T19:42:53.923 回答
0

是否生成了 R?如果没有,您的资源文件可能有问题。修复它们,然后做一个干净的项目。

于 2012-12-01T19:06:30.617 回答