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
どうも、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);
}
}