今日も生で!2012年01月27日 23:18

About画面
About画面


昨日は、かなりスリリングな生中継になった。24時間テレビで、放送時間中にマラソンランナーがゴールできるかどうか、ハラハラさせて視聴率を稼ぐ手が流行っているが、どうも途中で時間調整をしているという話もある。

こっちの生中継は、入力しているときにはナマだが、公開される時は終わってからだし、時間制限もないのだから、ホントにナマかどうかを客観的に検証する手立てがない。

インチキ生中継、ヤラセ、ごまかし、ズル、だまし・・・。

では、スタートです。

今回は、前回の続きで、二匹目のどじょうを狙う。ブラウザーにアバウト画面を出そうという企画である。

面白味に欠けるじみな企画だ。開発環境をインストールして初めての週末なのだから、もっとドハデなゲームとか、せめて動画再生くらいチャレンジしても良さそうなものだ。

でも、これで行く。地味で堅実なのが取り柄だ(ウソ)。

既に、エクリプスと仮想端末は立ち上がっている。

(About画面を追加)
http://thinkit.co.jp/article/1209/1

で、コピペを実行するが、一向にエラーが消えない。メニューとメニューアイテムの二つのメソッドをインプットして、いけると思ったのにだめだ。

もしやと思い、挿入する場所を既に記述してある部分の手前に記述(いや、ペースト)してみると、殆どのエラーが消えて、1個だけになった。これは、自動でR.javaを作ってしまえば消えたはず・・、消えた!。

おお、とりあえずデバッグして実行してみると、なにやらオプションメニューができている。地は白で、「i」マークの下に「Aout」と書いてある。クリックすると一瞬地の色がオレンジに変わり、消えてしまう。

よしよし、一時はどうなることかとひやひやしたが、次に進もう。

2ページ目まで終わる。エラーとの格闘が続く・・・。

まあ、今日はヒヤヒヤもんだ。とりあえず、エラーは消えたので、次に進む。

いやあ、ようやくアバウト画面のおでましになった。

アバウトメニューの色が気になる。白いままだ。R.javaの色コードを解析する(かっちょいい!)。なんと、みんな黒じゃん!。

相変わらず、コピペの世界から抜け出せない。今に見ていろ!、と思うのだが、その「今」がなかなか来ないのだ・・・。

今日も念のため、コードを記録しておく。

</MyWebView/src/com/example/mywebview/AboutActivity.java>

package com.example.mywebview;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MyWebView extends Activity {
/** Called when the activity is first created.
* @return
* @return
* @return */
public boolean onMenuItemSelected(int featureId,MenuItem item){
switch (item.getItemId()) {
case ABOUT_MENU_ID :
//Intentの作成
Intent intentAboutActitvity = new Intent(this,AboutActivity.class);
startActivity(intentAboutActitvity);
return true;
default :
break;
}
return super.onMenuItemSelected(featureId, item);
}
//オプション・メニューを作成する
private static final int ABOUT_MENU_ID = Menu.FIRST;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);

//Aboutダイアログ表示メニュー・アイテム
MenuItem aboutItem = menu.add(0, ABOUT_MENU_ID, 0 ,R.string.menu_item_name_about);
aboutItem.setIcon(android.R.drawable.ic_menu_info_details);

return true;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

WebView webView = (WebView)findViewById(R.id.main_webview);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("http://google.co.jp");




}
}

</MyWebView/src/com/example/mywebview/AboutActivity.java>

package com.example.mywebview;

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

public class AboutActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about_activity);
// OKボタン
Button okButton = (Button)findViewById(R.id.button_ok);
okButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
// 閉じる
finish();
}
});

}

}

</MyWebView/gen/com/example/mywebview/R.java>

/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/

package com.example.mywebview;

public final class R {
public static final class attr {
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int button_ok=0x7f050000;
public static final int main_webview=0x7f050001;
}
public static final class layout {
public static final int about_activity=0x7f030000;
public static final int main=0x7f030001;
}
public static final class string {
public static final int about_appname=0x7f040003;
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
/** オプション・メニュー用文字列
*/
public static final int menu_item_name_about=0x7f040002;
}
}

</MyWebView/res/layout/about_activity.xml>

package com.example.mywebview;

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

public class AboutActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about_activity);
// OKボタン
Button okButton = (Button)findViewById(R.id.button_ok);
okButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
// 閉じる
finish();
}
});

}

}

</MyWebView/res/layout/main.xml>

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<WebView
android:id="@+id/main_webview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>

</MyWebView/res/values/strings.xml>

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="hello">Hello World, MyWebView!</string>
<string name="app_name">MyWebView</string>
<!-- オプション・メニュー用文字列 -->

<string name="menu_item_name_about">About</string>
<string name="about_appname">MyWebView Version.1.0.0</string>



</resources>

</MyWebView/AndroidManifest.xml>

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

<uses-sdk android:minSdkVersion="4" />

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".MyWebView"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

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

</activity>

</application>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

</manifest>

というわけで、今回も成功裏に終わることができたが、R.javaとは何か、なぜ、アバウトメニューの地の色は白いままなのか、ボタンを押すと一瞬オレンジになるのはなぜか、実機にインストールしても、オレンジにならない(一瞬の変化もない)のはなぜか。

謎は謎を呼び、事件は複雑を極め、簡易ブラウザーのコピペ作戦は、次回、怒涛の最終回を迎える・・・。