R.javaの中身

投稿者: Anonymous

このプログラムでのエラーを治していただける方、お願いします。

package a.a;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class A extends Activity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

そして、エラーが、
getMenuInflater().inflate(R.menu.menu);
の行で、
この行に複数マーカーがあります
– menu は解決できないか、フィールド
ではありません
– menu は解決できないか、フィールド
ではありません

if (id == R.id.action_settings) {
の行で 
action_settings は解決できないか、フィールドではありません

というエラーが出ます。
R.javaの中にmenuという項目が無いからだと思い、追加したりしても元に戻ってしまいます。また、R.idの中にもやはりaction_settingsが無くて、どうしたら追加できるか、などが分からず四時間くらい格闘しています。どなたか解決できる方、教えてください。

解決

R.javaはres配下の各種リソースファイルを元にビルド時に生成・上書きされるものなので
おそらく、コメントにあるようにres/menu/menu.xmlを消してしまったものと思われます。

上記ファイルなどに問題はないのに、R.javaに該当フィールドが無い場合は
ビルドが出来なくて、現状のリソース構成でR.javaが生成されないという状態かも知れません。
この場合はビルドを無理矢理にでも通してしまえば良いので、
エラー箇所を全てコメントアウトして

public class A extends Activity {

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

    (中略)
}

などとして、一度ビルドを通してからコメントアウト箇所を元に戻してみると
R.javaの中身が更新されてエラー箇所の赤線が消えたりしないでしょうか?

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *