有完整的文档。
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
//unused //
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android .widget.TextView;
import android.app.ActionBar;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LayoutParams lp ;
lp=new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT),
ActionBar.LayoutParams.MATCH_PARENT);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
LayoutParams tvLP;
tvLP = new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
TextView tvName = new TextView(this);
tvName.setText("姓名: ");
ll.addView(tvName,tvLP);
首先,没有错误日志。我问这个问题是因为我想知道为什么“ this”和“ new”可以一起使用。 我认为不能放“ this”是因为据我所知,在语句之前没有类似Int和String类型的东西,没有理由使用“ this”
EditText etName = new EditText(this);
EditText etName = new EditText();
为什么有(这个)的人能工作?实际上,Android Studio可以帮助在此之前添加“内容”,这意味着
EditText etName = new EditText(Context:this);
有人可以在这句话中解释使用this
吗?
答案 0 :(得分:0)
在这种情况下,您描述的this
是您的MainActivity
类。这是有效的,因为Activity
扩展了Context
,并且TextView
类的构造函数采用了上下文。
有关活动和环境之间关系的更多信息,请点击此处:What is the difference between Activity and Context?
尽管如此,我还是建议您考虑使用XML定义布局,这里https://developer.android.com/guide/topics/ui/declaring-layout有指南,在线资源也很多。
我不确定这是否能回答您问题的最后一部分?
答案 1 :(得分:0)
您使用的EditText
的构造函数是
public EditText (Context context)
请参阅doc here
因此,您需要给它一个Context
类的实例。
在您的情况下,您的课程MainActivity
扩展了AppCompatActivity
,而该课程又扩展了Context
,因此您的课程MainActivity
是 Context
。
引用MainActivity
实例的方法是使用 this 关键字。
因此,您将 this 传递给EditText
的构造函数。即:
new EditText(this)
所有这些的要点是,现在,您刚刚实例化的新EditText
引用了创建它的MainActivity
实例。然后,如果需要,它可以回叫它。