【Android】ボタン作成 表示と動作の関連付け が難しい件

EngineeringAndroid, 備忘録, 職業訓練

(TextView)this.findViewById
(TextView)findViewById
setOnClickListener(new OnClickListener()
void onClick(View v)

・(TextView)this.findViewById
・(TextView)findViewById
・setOnClickListener(new OnClickListener()
・void onClick(View v)

を設置する順番が、事例によりそれぞれに異なり個々の特徴となっている。

 

解答1

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

        final MainActivity activity = this;

        setContentView(R.layout.activity_main);

        final TextView text = (TextView)this.findViewById(R.id.textView01);

        Button btn01 =(Button)findViewById(R.id.button01);
        btn01.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                text.setTypeface(Typeface.SANS_SERIF);
            }
        });
        Button btn02 =(Button)findViewById(R.id.button02);
        btn02.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                text.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
            }
        });
    }

TextView のインスタンスを複数箇所で遣うため、トップで宣言。アラートに従い final を付加した。

 

解答2

		Button btn = (Button)findViewById(R.id.button);
		btn.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View view) {
				TextView text = (TextView)findViewById(R.id.textView);
				EditText edit = (EditText)findViewById(R.id.editText);
				Editable s = edit.getText();
				text.setText("Hi おっす, " + s + " !");
			}
		});

(5行目 必須ではないかも、この部分だけ見れば。)

 

模範解答1

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn = (Button) findViewById(R.id.again);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ((TextView) findViewById(R.id.myShow)).setText("");
                ((TextView) findViewById(R.id.shout)).setText(getText(R.string.shout));
                ((TextView) findViewById(R.id.yourShow)).setText("");
            }
        });
    ~

TextView を onClick の動作に含めてしまうやり方。 こうするしかない例題で、TextView を上部ブロックで宣言すると、ボタンのインスタンスごとにこの紫3行をコピペしなければならなかった。

 


最初に全体の構造が見えないと先に進みようがない。書きようがない。質問してもツボを押さえた答えが得られなければ、質問するだけ労力の無駄だ。 たくさんの事例を見なければ、全体の見通しについて確信を持てる段階には今はない。

 


 

EngineeringAndroid, 備忘録, 職業訓練

Posted by Qawai