restofwaterimpのぎじゅつMemo

SIerに所属。企画から運用まで幅広くやってます。C#中心に書いてます。

R.layoutの認識されるまでに・・・

Androidのプログラム学習しようと久々に思い立ち、ADT , Android SDK ManagerでAPIを最新にし、テキストを見ながら、入力フォームとボタンという簡単な画面を作って、さてビルド・・・としたら、「あれ?Rがエラーだ」と。

 

この2つのサイトで、どうもAPIのバージョンをあげていくと、

 

http://slumbers99.blogspot.jp/2013/05/eclipse-adt-22-android-sdk-manager-2.html

http://qiita.com/JunSuzukiJapan@github/items/3dd3b0bffb0db7f55356

f:id:restofwaterimp:20131214080037p:plain

 

 

どうも、Android SDK Build-toolsを入れないと行けないのが判明。

これをインストールして、さあ、大丈夫だろうと進むと。

あれ?まだエラーが。

なんかなとまた調査。

 

http://blog.takapra.com/2012/05/android%E3%80%80r-javaが消える件/

このサイトを見て、なんか関連ファイルがミスっているとR.javaができないみたい

というのがわかった。

どうも、原因はmanifestみたいだったので修正。

resファイルにR.javaも作成され、今度こそ大丈夫だろうと見ていたが、

今度もまたおかしく。main.xmlが解決できない・・。あれ?

 

 

import android.R;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.view.View;

import android.widget.EditText;

 

public class DataExchange extends Activity {

 

private EditText textBoxA;

private EditText textBoxB;

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

 

textBoxA = (EditText)findViewById(R.id.valueA);

textBoxB = (EditText)findViewById(R.id.valueB);

}

/*

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.data_exchange, menu);

return true;

}

*/

public void onTouch(View v){

String strA = textBoxA.getText().toString();

String strB = textBoxB.getText().toString();

textBoxA.setText(strB);

textBoxB.setText(strA);

}

 

}

 

http://d.hatena.ne.jp/none53/20110501/1304267159

で見てみると、どうもandroid.Rのimportがイカンらしい。

Rにエラーが有るときに自動インポートして安心していたのが、こいつが悪さしていた。

このimportを削除するか、packageとxmlのファイルが違うなら、R.javaがあるpackage名をimportすることで解消。やっと作業できる。

 

package jp.gihyo.mitoma.chap01_01;

 

 

//import jp.gihyo.mitoma.chap01_01.*;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.view.View;

import android.widget.EditText;

 

public class DataExchange extends Activity {

 

private EditText textBoxA;

private EditText textBoxB;

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

 

textBoxA = (EditText)findViewById(R.id.valueA);

textBoxB = (EditText)findViewById(R.id.valueB);

}

/*

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.data_exchange, menu);

return true;

}

*/

public void onTouch(View v){

String strA = textBoxA.getText().toString();

String strB = textBoxB.getText().toString();

textBoxA.setText(strB);

textBoxB.setText(strA);

}

 

}