sample6bはことりんにそのまま変換できずエラーが出るプログラム
変数はすべてことりんでは宣言されていないといけないらしい
UMLの図
Unified Modeling Language
1回これを読んでおくこと
エクリプスさんがプラグインでこれを作れる
いまのバージョンだと修正しないとエラーになるらしい
JDFSDKとかいうのをいれないといけないらしい
下準備:
ヘルプ
新規ソフトウエアのインスト
http://download.eclipse.org/releases/2019-09/
を入力
GEFを入力
これを選ぶ
あまてらすなんとかがよく使われるUML図プラグイン
C:\pleiades\eclipse\dropins\AmaterasModeler\eclipse\plugins
ここに、zipファイル(AmaterasUML_1.3.4-20200227T042128Z-001.zip)の中に入っていたやつをいれる
新規
そのた
あまてらすUML
クラス図
左側からドロップしてつかう
でもやっぱりバグがあって保存したの開くと、ないらしいな。
基本情報処理のメイズの問題はいい問題
いちどやってみるといいらしい
検定の問題はよいコードじゃなくて問題のための問題
無駄な処理をわざとしている
それをよろしいように直そうという問題だったりする
だからプログラムが得意なひとほどハテナになる
ええプログラムがのってる訳でなく、悩ますためのコードが載ってると考える
ここをよむ
話は戻ってlesson1 sample6b.java
エラーさんがでたが、
①ボタンの処理だから
bt.setOnTouchListener(new SampleTouchListener());
じゃなくて
bt.setOnClickListener(new SampleClickListener());
②OnClickListenerのなかには
onClickがないといけない決まり
class SampleTouchListener implements View.OnTouchListener{
public void onClick(View v) {
tv.setText("いらっしゃいませ");
}
}
できた
--->sample6B.java
package com.example.lesson1;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class Sample6B extends AppCompatActivity {
TextView tv;
Button bt;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout l1 = new LinearLayout(this);
l1.setOrientation(LinearLayout.VERTICAL);
setContentView(l1);
tv = new TextView(this);
tv.setText("いらっしゃいませ");
l1.addView(tv);
bt = new Button(this);
bt.setText("初期状態に戻す");
bt.setOnClickListener(new SampleClickListener());
l1.addView(bt);
}
public boolean onTouchEvent(MotionEvent e) {
if (e.getAction() == MotionEvent.ACTION_DOWN) {
tv.setText("こんにちは");
} else if (e.getAction() == MotionEvent.ACTION_UP) {
tv.setText("さようなら");
}
return true;
}
class SampleClickListener implements View.OnClickListener {
public void onClick(View v) {
tv.setText("いらっしゃいませ");
}
}
}
もうひとつエラーをしていて、
class SampleClickListener implements View.OnClickListener {
public void onClick(View v) {
tv.setText("いらっしゃいませ");
}
}
を、
public class Sample6B extends AppCompatActivity {
の外側に置いてしまっていた。
内側が正解である。
lesson3
→空のアクティビティ
→javaを選択
レイアウトエディターを使った画面周りの作成。
サンプルプログラムはいつもHello worldと表示される
マニフェストをみると.MainActivityを呼び出している
MainActivityのなかみ--->
package com.example.lesson3;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
フォルダres
layout
activity_main.xmlをひらく
シーンビルダーが内臓されているようなもの。
コンストレイントレイアウトというのを推しているらしいのだが使いづらいらしい
相対位置でレイアウトするらしい
いっこ動かすとぐちゃぐちゃになって使いづらいらしい
リニアレイアウトでやりましょうはじめは。
ただ軽いので、開発では最後にコンストに変換するらしい
これを
こんなふうに
ここはこんすとレイアウト用の属性なのでざっぱりけす
/>は要るようだ
ここをバーティカルにして縦長いのに固定しますよ
ボタンを追加
sizeをかえたかったら検索でsizeとすると、
ボタンをクリックしたときの作業
まあidをつけますか
じゃあMainActivity.javaに移動して
宣言などしますよ
public class MainActivity extends AppCompatActivity {
private TextView myText;
private Button myBtn1;
こうだ
newとかはいらないのですよ
ばーてぃかるになってなかったので
ボタンが横に配置されてた
なおった。
ボタンに色を付けるときは
検索でbackground
#からカラーコードをいれてやる
myText = findViewById(R.id.myText);
Rとはリソース
赤地になることがあるが気にしなくていい
ビルドができたら解消されるらしい
Rはアンドロイドスタジオさんがつくったリソースというオブジェクトさん
サブカテゴリみたいな感じでidがついてるらしい
面接ではアンドロイドスタジオでつくったものをみせるとはやい。
デザインの画面の青っぽいほうは枠組みたいのらしい。
ここでも切り替えられるよ。
なおxmlなので//はコメントアウトじゃないよ
<!---->
ですよ
コメント部分を選択状態で、ctrl+/でコメントアウトの付け外しができるよ。
すこしあそんでみますか
ボタン2をふやしたが
レンダリングが進まなかったので
6:Logcatをみたら
エラーさんがいっぱい。
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at com.example.lesson3.MainActivity.onCreate(MainActivity.java:36)
Nullですなといっておられる
ボタンを追加したときは、
①ボタンを宣言する
private Button myBtn2;
②ボタンをこれする
myBtn2=findViewById(R.id.myBtn2);
追加したときはこの2つが必要なのだ。
Logcatはここ↑
あそんだ
acticity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/myText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:textSize="30sp" />
<!-- aaaaa-->
<!-- bbb-->
<!-- -->
<Button
android:id="@+id/myBtn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ff0"
android:text="ボ!タ!ン!!"
android:textColor="#FF9800"
android:textSize="36sp" />
<Button
android:id="@+id/myBtn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ざわ"
android:textSize="30sp" />
</LinearLayout>
MainActivity.java
package com.example.lesson3;
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 myBtn1;
private Button myBtn2;
int i = 0;
String hoge="ざわ...";
int myTextSize = 36;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myText = findViewById(R.id.myText);
myBtn1=findViewById(R.id.myBtn1);
myBtn2=findViewById(R.id.myBtn2);
myBtn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(i==0) {
myText.setText("Good afternoon World");
myTextSize+=5;
myText.setTextSize(myTextSize);
i=1;
}else{
myText.setText("Good night World");
myTextSize+=5;
myText.setTextSize(myTextSize);
i=0;
}
}
});
myBtn2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
hoge += hoge;
myTextSize = 36;
myText.setText(hoge);
}
});
}
}