1

これに関する他の解決策を読みました。import.filename.R はありません。私の .xml タイトルはすべて小文字です。プロジェクトをクリーンアップしました。私はそれを再作成しようとしましたが、どれもうまくいきませんでした。ファイル内のすべての「R.」にエラーが発生し、変数に解決できません。5 つの異なる XML ファイルがあるので、そのうちの 2 つだけを示し、次に 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

私は実際に今日この問題に出くわしたばかりで、過去1時間ほど悩まされていました. コードを掘り下げるのに時間がかかりましたが、最終的に問題を見つけることができました。私が最初にプロジェクトを作成した初期の段階で、Eclipse は空白のアクティビティといくつかの基本的なリソースを追加しました。作成されたリソースの 1 つは、プロジェクトの作成時に最初に削除した文字列を参照する、奇妙な配置の menu.xml ファイルでした。XML レイアウト ファイルに問題があるとアプリケーションをビルドできないため、呼び出された文字列を文字列 XML 値ファイルに追加し直しました。

したがって、私の問題を解決する際に実際に学んだ教訓は、R ファイルが生成されないという問題がある場合、アプリケーションのビルドを妨げている XML ファイルの問題が原因である可能性が高いということでした。

于 2012-12-01T21:00:52.197 に答える
1

com.deitel.madlibs.Rをインポートし、クリーニングして、インポートを削除してみてください。Rでバグを食い物にするとき、私はそれに近いことをしますが、正確にはそうではないかもしれません。

于 2012-12-01T19:05:52.187 に答える
0

Rはまったく生成されますか?そうでない場合は、リソースファイルに問題がある可能性があります。それらを修正してから、クリーンなプロジェクトを実行します。

于 2012-12-01T19:06:30.617 に答える
0

リソースクラスの問題を抱えている他の人々がこれを見つけるかもしれないという(絶望的な)希望でこれを追加しています。

神秘的なものは何もありません

android.R

、 また

your.packagename.com.R

.

AAPT がアプリケーションをコンパイルすると、R.java が生成されます。プロジェクト構造のルートにある gen フォルダーで確認できます。public static final intプロジェクト内のリソース (ドローアブル、文字列、レイアウト ビューなど) を参照 する一連の を定義するだけで、名前を使用してコード内でそれらを参照できるようになります。

したがって、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 をインポートに追加します。次に、 をコンパイルしようとしますfindViewById(R.drawable.icon)が、これは効果的findViewById(android.R.drawable.icon)であり、デフォルトの Android クラスには drawable.icon がないため、コンパイルは失敗します。

それを修正するには、2 つのことだけが必要です。

  1. インポートから android.R を削除します
  2. R.java の生成が失敗する原因となっている問題を見つけて修正する

私の経験では、レイアウト XML の XML エラーが常に IDE に正しく表示されるとは限りません。これに行き詰まったとき、私はバージョン履歴を調べて、最近の変更を調べたり、各レイアウト XML を開いてプレビューでエラーをチェックしたりしました。

これが少なくとも誰かに役立つことを願っています...

于 2012-12-01T19:42:53.923 に答える