2013-08-09 32 views
35

私のアプリで作業していましたが、javaでイメージを表示しようとするまではすべて正常でした。Androidスタジオ:Gradle:エラー:シンボル変数を見つけることができません

アプリを一度実行して正常に実行され、画像が表示されました。 その後、いくつかのライブラリをインポートするように私に依頼し、それらをインポートしました。その後、私は自分の活動に間違いがあります。 MainActivityで

Gradle: error: cannot find symbol variable activity_main 
Gradle: error: cannot find symbol variable button1 
Gradle: error: cannot find symbol variable button2 
Gradle: error: cannot find symbol variable textView 
Gradle: error: cannot find symbol variable secondActivity 

私がインポートされているこれらのライブラリ::のような

エラー

import android.R; 
import android.content.Intent; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.Button; 

とsecondActivityで

これら:

import android.R; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

は、誰もがこの問題を解決する方法を知っていますか?

編集:私はimport android.R;を削除しましたが、現在は正常に動作しています。

+0

私はGradle resyncを修正しました。 – akiraspeirs

答えて

53

android.Rをインポートしないでください。それは自動的に生成され、認識されるべきです。 This questionには、インポートを削除した後にRというエラーが表示された場合に役立つヒントが多数含まれています。

輸入を除去した後いくつかの基本的な手順は、これらのエラーが表示される場合:

  • は、XMLファイルには、エラーやタイプミス
  • があなたのことを確認してくださいがないことを確認してください
  • を再構築し、その後、ビルドをきれいにリソース名は[a-z0-9.]です。何らかの理由で大文字や記号を使用することはできません。あなたは複数のフレーバーを使用している場合
+0

"import com.your.app.package.name.R"を手動で宣言すると、 "シンボル変数が見つかりません"という問題が修正されました。しかし、これは、Android Studioのメインアプリケーションプロジェクトにモジュールからクラスをコピーして、Gradleをビルドできなかった後です。しかし、私は上記のオプションをまず試してみることをお勧めします。これはこのエラーの可能性が高いケースです。 – TouchBoarder

+1

私は現在同様の問題を抱えていました。問題は私のプロジェクトではモジュールが増えたことです。例えば。 'com.packagename.app'モジュールと' com.packagename.library'モジュールです。クラスと 'R.string'リソースはどちらも' com.packagename.app'モジュールからのものでしたが、私は何とか 'import com.package.library.R'をクラス内に持っていました。どうやらAndroid Studioはこれをエラーとして認識せず、Gradle/Syncはプロジェクトを問題なく構築します。しかし、ユニットテストを実行しようとしたとき、Gradleビルドが記述されたエラーで失敗しました。 'import com.packagename.library.R'を削除して私の問題を解決しました。 –

+0

注:アンダースコア '_'はリソースIDの –

19

([ツール]> [Gradleのファイルとアンドロイド>同期プロジェクト経由)のGradleの同期を実行しますか?

-make sure the resource file is not declared/added both in only one of the flavors and in main.

例:a_layout_file.xmlシンボル変数を含むファイル(S)

SRC:

flavor1の/のRES /レイアウト/(NOファイル)

flavor2/RES /レイアウト/ a_layout_file.xml

メイン/RES /レイアウト/ a_layout_file.xml

は、このセットアップは、エラーを与える:リソースファイルのみ本体のみで両方の味またはにすることができるので、これは、シンボルの変数を見つけることができません。

10

プロジェクトでStringビルド設定フィールドを使用している場合、これはそうかもしれません:

buildConfigField "String", "source", "play" 

それはエラーが発生する原因となります上記のように、あなたの文字列を宣言した場合。あなたの変数は、それを参照しているメソッドのスコープ内にあることを確認してください

<activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".ScanActivity"> 

    </activity> 
0

:修正はそれを変更することです。たとえば、クラス内のメソッドでローカルにtextviewを定義し、別のメソッドでそれを参照していました。

テキストビュー定義をクラス定義のすぐ下のメソッドの外に移動したので、他のメソッドが定義にアクセスして問題を解決しました。

0

:あなたはAndroidManifest.xmlファイルにMainActivity.ScanActivityを持っていることを確認し

buildConfigField "String", "source", "\"play\"" 
0

インポートしたRが別のモジュールのものでないことを確認してください。モジュールからメインプロジェクトにクラスを移動しました.Rはモジュールのものでした。

関連する問題