あさの おはなし
電卓
M+ メモリに計算結果を格納
MR メモリーリコール メモリした数を呼び出す
MC メモリクリア
C 全消し
CE 直前のエントリーを消す
プリファレンス 前の情報の取り方
今日はプリントで
Android stadio
新規プロジェクト
→空のアクティビティ
レイアウトエディターでもやる
長いコードはコピペで
おさらい
appに入っている
マニフェストでみると.MainActivityに設定されてる
リニアレイアウトに変更
コントロールを追加していく
http://m.gmobb.jp/ymmkito/doujyo/android/Android0111.pdf
ここからこぴってよい
myText.
まで入力するとオブジェクトにどうしたいかのメソッド候補が現れる
ボタンを追加したら
2つ追加する
private Button myButton2;
と
myButton2 = findViewById(R.id.button2);
と
myButton2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
myText.setText("Hello wolrd!");
}
});
3つだった。
クラスのなかでつくるクラス
インナークラスとか無名クラスとかいう。
いまやったのがそのやり方
いろんなやりかたがあるらしく、サンプルによって違うので混乱することがあるらしい
イベントリスナーの実装のやり方
方法1.インナークラス(無名クラス、匿名クラス)を作る
2.Activity にリスナーインターフェースを実装させ る(implements)
3.クラスを作る
4.onClick プロパティで指定したメソッドを作る
ボタンが3つ4つ並んでいるとonCreateメソッドのなかがごちゃごちゃする→2.が多くなる
インプリメンツ
クリックリスナーというのは
かならずオンクリックメソッドを実行させないといけないというやつ
抽象メソッドとして実装し実行時に決めてくださいというあれ。
2.Activity にリスナーインターフェースを実装させる(implements)
public class Sample extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
~中略~
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v != null) {
switch (v.getId()) {
case R.id.button:
//処理
break;
default:
break;
}
}
}
}
vのところに入れるらしい
2.のやりかたに今のコードを変更するよ
いまのコード:
package com.example.lesson4;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView myText;
private Button myButton1;
private Button myButton2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myText = findViewById(R.id.myText);/*newする必要はなくひもづけだけする*/
myButton1 = findViewById(R.id.button);
myButton2 = findViewById(R.id.button2);
myButton1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//myText に「Bye World!」と表示する Let's do it!
myText.setText("bye wolrd!");
}
});
myButton2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
myText.setText("Hello wolrd!");
}
});
}
}
↓
MainActivity.java
package com.example.lesson4;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView myText;
private Button myButton1;
private Button myButton2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myText = findViewById(R.id.myText);/*newする必要はなくひもづけだけする*/
myButton1 = findViewById(R.id.button);
myButton2 = findViewById(R.id.button2);
myButton1.setOnClickListener(this);
myButton2.setOnClickListener(this);
/*リスナーインターフェイスのやり方*/
//@Override
//public void onClick(View v) {
// if (v != null) {
// switch (v.getId()) {
// case R.id.button:
// //処理
// myText.setText("bye wolrd");
// break;
// case R.id.button2:
// //処理
// myText.setText("hello wolrd");
// break;
// default:
// break;
// }
//}
// }
}
@Override
public void onClick(View v) {
if (v != null) {
switch (v.getId()) {
case R.id.button:
//処理
myText.setText("bye wolrd");
break;
case R.id.button2:
//処理
myText.setText("hello wolrd");
break;
default:
break;
}
}
}
}
このブロックでくくるのを意識する。
今回}がずれていたのでエラーが出ていた。