質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.40%

  • Java

    16443questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    7494questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    4426questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

setContentView(R.layout.activity_main); の R に、Cannot resolve symbol 'R'となります。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,333

edoooooo

score 153

setContentView(R.layout.activity_main); の R に、Cannot resolve symbol 'R'となります。

package com.example.android.sample.calculator;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}


どうすれば良いのでしょうか? 教えていただけないでしょうか?

エラーが5つ出ているdebug/AndroidManifest.xmlです。(AndroidManifest.xmlにはエラーはでていません。)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.sample.calculator"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="23"
        android:targetSdkVersion="24" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name="com.example.android.sample.calculator.MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


上のdebug/Manifest.mlxのエラー部分だけをカーソルを合わせた時に出てくるエラーとセットでまとめました。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
//ここには、URI is not registered(Settings|Project Settings|Schemas and DTDsがでます。

    android:versionCode="1"
//これには、Attribute  android:versionCode is not allowed hereがでます。

    android:versionName="1.0" >
//これには、Attribute android:versionName is not allowed hereがでます。

      android:allowBackup="true"
//これには、Attribute android:allowBackup is not allowed hereがでます。
      android:icon="@mipmap/ic_launcher"
//これには、Attribute android:icon is not allowed hereがでます。

        android:supportsRtl="true"
//これには、Attribute android:supportsRtl is not allowed hereがでます。

 android:theme="@style/AppTheme" >
//これには、Attribute android:theme is not allowed hereがでます。

MainActivityです。

package com.example.android.sample.calculator;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements TextWatcher, View.OnClickListener{

    //上の計算ボタンを押した時のリクエストコード
    private static final int REQUEST_CODE_ANOTHER_CALC_1=1;
    //上の計算ボタンを押した時のリクエストコード
    private static final int REQUEST_CODE_ANOTHER_CALC_2=2;



    //上のEditText
    private EditText numberInput1;
            //下のEditText
    private EditText numberInput2;


    //演算子選択用のSpinner
    private Spinner operatorSelector;

    //計算結果表示用のTextView
    private TextView calcResult;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //上のEditText
        numberInput1=(EditText)findViewById(R.id.numberInput);
        //上のEditTextの文字入力イベントを受け取る
        numberInput1.addTextChangedListener(this);

        //下のEditText
        numberInput2=(EditText)findViewById(R.id.numberInput2);

        //下のEditTextの文字入力を受け取る
        numberInput2.addTextChangedListener(this);




        //演算子選択用のSpinner
        operatorSelector=(Spinner)findViewById(R.id.operatorSelector);

        //計算結果表示用のTextView
        calcResult=(TextView)findViewById(R.id.calcResult);


        //上の計算ボタン
        findViewById(R.id.calcButton1).setOnClickListener(this);
        //下の計算ボタン
        findViewById(R.id.calcButton2).setOnClickListener(this);
        //続けて計算するボタン
        findViewById(R.id.nextoButton).setOnClickListener(this);

    }


    @Override
    public void onClick(View v){
        //タップされた時の処理を実装する
        int id=v.getId();

        //IDごとに違う
        switch(id){
            case R.id.calcButton1:
                //上の計算ボタンかが押された時の処理

                Intent intent1=new Intent(this,AnotherCalcActivity.class);
                startActivityForResult(intent1,REQUEST_CODE_ANOTHER_CALC_1);
                break;
            case R.id.calcButton2:
                //下の計算ボタンが押された時の処理

                Intent intent2=new Intent(this,AnotherCalcActivity.class);
                startActivityForResult(intent2,REQUEST_CODE_ANOTHER_CALC_2);
                break;
            case R.id.nextButton:
                //続けて計算するボタンが押された時の処理
                //両方のEditTextに値が設定されていれば、処理を行う
                if(checkEditTextInput()){
                    //計算する
                    int result=calc();
                    //上のEditTextの値を書き換える
                    numberInput1.setText(String.valueOf(result));
                    //計算し直して、画面を更新する
                    refreshResult();
                }

                break;
        }


    }

    @Override
    protected void onActivityResult(int requestCode,int resultCode,Intent data){
        //startActivityResult()から戻ってきた時に呼ばれる
        super.onActivityResult(requestCode,resultCode,data);

        //結果がOKではない場合は何もしない
        if(resultCode !=RESULT_OK)return;

        //結果データセットを取り出す
        Bundle resultBundle=data.getExtras();

        //結果データセットに、所定のキーが含まれていない場合、何もしない
        if(!resultBundle.containsKey("result"))return;

        //結果データから、"result"キーに対応するint値を取り出す。
        int result=resultBundle.getInt("result");

        if(requestCode == REQUEST_CODE_ANOTHER_CALC_1) {
            //上の計算ボタンを押した後戻ってきた場合
            numberInput1.setText(String.valueOf(result));

        }else if(requestCode==REQUEST_CODE_ANOTHER_CALC_2){
            //下の計算ボタンを押した後戻ってきた場合
            numberInput2.setText(String.valueOf(result));
        }

        //計算をしなおして、結果を表示する
        refreshResult();
    }


    //2つのEditTextに入力がされているかをチェックする
    private boolean checkEditTextInput(){
        //入力内容を取得する
        String input1=numberInput1.getText().toString();
        String input2=numberInput2.getText().toString();

        //2つともから文字列(あるいはnull)でなければ、true
        return !TextUtils.isEmpty(input1)&& !TextUtils.isEmpty(input2);
    }

    @Override
    public void beforeTextChanged(CharSequence s,int start,int count,int after){
        //テキストが変更される直前に呼ばれる。Sは変更前の内容

    }

    @Override
    public void onTextChanged(CharSequence s,int start,int before,int count){
        //テキストが変更される時に呼ばれる。sは変更後の内容で編集不可
    }

    @Override
    public void afterTextChanged(Editable s){
        //テキストが変更された後に呼ばれる。sは変更後の内容で編集可能
        //必要があれば、計算を行い、結果を表示する
        refreshResult();

    }

    //計算結果の表示を更新する
    private void refreshResult(){
        if(checkEditTextInput()) {
            //計算を行う
            int result = calc();

            //計算結果用のTextVieを書き換える
            String resultText = getString(R.string.calc_result_text, result);
            calcResult.setText(resultText);

        }else{
            //どちらかが入力されていない状態の場合、計算結果用の表示をデフォルトに戻す
            calcResult.setText(R.string.calc_result_default);
        }
    }


    //計算を行う
    private int calc(){
        //入力内容を取得する
        String input1=numberInput1.getText().toString();
        String input2=numberInput2.getText().toString();

        //int型に変換する
        int number1=Integer.parseInt(input1);
        int number2=Integer.parseInt(input2);

        //Spinnerから、洗濯中のindexを取得する
        int operator=operatorSelector.getSelectedItemPosition();

        //indexに応じて計算結果を返す
        switch(operator){
            case 0://足し算
                return number1+number2;
            case 1://引き算
                return number1-number2;
            case 2://掛け算
                return number1*number2;
            case 3://割り算
                return number1/number2;
            default:
                //通常発生しない
                throw new RuntimeException();
        }
    }




}


どうぞよろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

プロジェクト内にR.javaは存在しますか?
xml等にエラーがあるとR.javaは生成されないので質問のようなエラーが発生することがあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/12/02 13:26

    R.javaは、Rをalt プラス enter を押してでてきた選択肢で作るのでしょうか? Create contant field 'R'などがでてきます。これでプロジェクト内にR.javaを作成するのでしょうか?
    xmlには、エラーはないのですが、debug/AndroidManifest.xmlにエラーが沢山あります。
    AndroidManifest.xmlにはないです。
    エラーのあるコードを質問文にのせました。申し訳ありません。よろしくお願いします。

    キャンセル

  • 2016/12/02 14:12

    R.javaはプログラマが作成するものではありません。
    できていないならプロジェクトにエラーがあり、ビルドができていない可能性があります。

    プロジェクトはどのようにして作りましたか?

    キャンセル

  • 2016/12/02 14:31

    start a new AndroidStudio projectを選択して、作成しました。

    empty を選択しました。
    これを作成する前に、macのFinderという、データ保管場所のAllMyFilesを全削除してしまったことが原因なのでしょうか?
    申し訳ありません。よろしくお願いします。

    キャンセル

  • 2016/12/02 15:21

    AllMyFilesの中には何が入っていましたか?

    キャンセル

  • 2016/12/02 15:32

    自分は、以前エクリプスでもjavaで開発してて時にインストールしたjarファイルや、データベースの時などにもインストールしたjarファイルなどがありました。AndroidStudioで勉強を始めてからは、サーバーのjarファイルの他に、もしかしたらAndroidStudioに必要なjarファイルをインストールしていたかもしれません。そうだとしたら、消してしまいました。

    もっとも、量の多かったものは、プログラムのコードです。それを消したため、以前に開発したメモ帳などのレイアウトファイルや、クラスなどは消えて、動かないメモ帳となりました。
    しかし、今作成しているアプリケーションは、すべてが消えてから、一から作り直したので、コードが消えていることはありません。どうぞよろしくお願いします。

    キャンセル

  • 2016/12/02 15:35

    macのメモ帳が重くて消してしまったのですが、メモ帳は、一つのメモに何万字も書くことができないだけでした。
    そのような理由で消したため、内容はほとんど確認していないのですが、.jarというファイルは、入っていました。

    キャンセル

  • 2016/12/02 16:29

    AndroidManifest.xmlを見たら、エラーが出てきてました。

    'com.example.android.sample.calculator.MainActivity' has not default constructor less

    Validates resource references inside Android XML files. と出ていました。

    キャンセル

  • 2016/12/02 17:25

    消したものが、わからない以上考えても無駄ですね。
    まずはAndroidSDKが存在するかを確認してください。存在しない場合はSDKマネージャーを起動し、再度SDKをダウンロードしてください。

    キャンセル

  • 2016/12/02 17:27

    MainActivityにコンストラクタを宣言していませんか?

    キャンセル

  • 2016/12/04 18:24

    MainActivityにコンストラクタは、宣言していません。
    MainActivityのコードを追加しました。どうぞよろしくお願いします。

    キャンセル

  • 2016/12/04 19:38

    SDKはダウンロードしましたか?

    キャンセル

  • 2016/12/05 20:47

    Configure の SDKManagerを見てみると、Android6.0 Update avaliable
    Android 4.1.2 installed と出ているのですが、再インストールすべきなのでしょうか?

    キャンセル

  • 2016/12/05 21:06

    キャンセル

  • 2016/12/06 10:52

    ありがとうございます。
    New Modules でAndroid と、教えていただいたサイトに書いてあり、

    「移動し、「ファイル>プロジェクト構造>モジュール」、「追加」し、「アンドロイド」をクリックして「OK /適用」をクリックします。」

    Android Libraryをnewしたところ、Rのエラーが消えました。ありがとうございました。

    キャンセル

  • 2016/12/06 12:32

    コードの他のエラーも改善し、動かすことができました。ありがとうございました。

    キャンセル

+1

Clean Projectをするとエラーが消えることがあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/12/02 13:14

    ありがとうございます。やってみます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.40%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Java

    16443questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    7494questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    4426questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。