これはviewクラスを描けば、自動で?activity_main.xmlに表示されるという認識でいいのでしょうか?
違います。
と言っても、ソースコードを追っても追いきれなかったので確証はありませんが。
java
1	setContentView(R.layout.activity_main);
は、
java
1	View view = LayoutInflater.from(this).inflate(R.layout.activity_main, null);
2	setContentView(view);
と書き換えることができます。
「Viewを指定するとレイアウトになにかする」のではなくて、「レイアウトを指定するとViewを作成してsetContentViewを呼び出す」と考える方が自然だと思います。
てことは、thisってのがレイアウトを指定(「この」画面)という理解でいいのでしょうか?
違います。
というか、それは質問とは関係のない話です。
先のコードは一部のみ書きましたが、Activityのソースまるまるを、ついでに上記の部分もくどく書くと以下のようになります。
java
1package com.example.sample;
2
3import android.app.Activity;
4import android.os.Bundle;
5import android.view.View;
6import android.view.LayoutInflater;
7
8public class MainAcitvity extends Activity {
9	@Override
10	protected void onCreate(Bundle savedInstanceState)
11	{
12		super.onCreate(savedInstanceState);
13		// LayoutInflater inflater = getLayoutInflater();
14		LayoutInflater inflater = LayoutInflater.from(this);
15		View view = inflater.inflate(R.layout.activity_main, null);
16		setContentView(view);
17	}
18}
(最近kotlinばっか書いていてjavaは久しいので、間違いがあったらごめんなさい)
レイアウトIDからViewを作成するには、LayoutInflater#inflateメソッドを呼び出す必要があります。
LayoutInflater#inflateメソッドを呼び出すには、LayoutInflaterクラスのインスタンスが必要です。
LayoutInflaterクラスのインスタンスを取得するには、Activity#getLayoutInflaterメソッドか、LayoutInflater#fromメソッドのいずれかを呼び出す必要があります。
先の例ではLayoutInflater#fromメソッドを呼び出したのですが、引数にContextクラスのインスタンスが必要になります。
ActivityクラスはContextクラスを継承しているので、Activityクラスのインスタンスでも問題ないわけで、Activityクラスのメソッド内であるのでthis(つまり自分自身のインスタンス)を渡したわけです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/14 13:00
2021/01/14 13:39
2021/01/14 13:58