两者之间有什么区别
setContentView(R.layout.activity_main);
TextView txtView = (TextView)findViewById(R.id.text);
和
TextView textView = new TextView(this);
setContentView(textView);
我找到了这两段代码。首先,setContentView
有一个关于布局的信息。在第二种情况下,它具有作为参数传递的视图。是textView还是一个id。我认为区别在于,在第一种情况下,它是XML文件(也包含textView)中描述的activity_main的布局,在第二种情况下,它是textView的id。告诉我我是否正确。
还要告诉我这里的“这个”指的是什么。为什么我们在第一种情况下使用findViewById
?
答案 0 :(得分:1)
Activity.setContentView()
有2个签名。一种是以布局ID作为参数,另一种是以View作为参数。实际上有第三个使用View和ViewGroup.LayoutParam作为输入。
这三种方法都采用它们所得到的(视图或要膨胀的布局)并将其设置为它们的根元素。简而言之:这里没有真正的区别。开发人员可以从中选择几个选项来告诉Activity有关其根UI元素
另请参阅:setContentView description
然后,TextView txtView = (TextView)findViewById(R.id.text);
行正在Activitys Content(在这种情况下,R.layout.activity_main中的每个视图)中搜索ID为“ text”的TextView。
第TextView textView = new TextView(this);
行正在以编程方式创建新的TextView,而不是夸大布局xml。 this
参数是一个Context实例。创建视图始终需要一个Context实例。活动是上下文。
答案 1 :(得分:1)
在第一个代码中,
setContentView(R.layout.activity_main);
TextView txtView = (TextView)findViewById(R.id.text);
您正在设置容器的内容视图,然后尝试使用ID-文本访问该视图。
例如:
<RelativeLayout android:height="match_parent"
android:width="match_parent">
<TextView
android:id="@+id/text"
android:text="Hello"
android:height="wrap_content"
android:width="wrap_content"/>
</RelativeLayout>
在此布局文件中,TextView具有id-text 因此,为了以编程方式访问文本视图,我们利用findViewById()t获取对视图的引用。
TextView textView = findViewById(R.id.text);
现在,我们可以使用此视图引用对视图进行更改。 例如,我们可以将文本更改为
textView.setText("This is a test");
据
TextView textView2 = new TextView(this);
有关,您正在动态创建TextView。可以根据需要将其添加到父容器中。
答案 2 :(得分:0)
使用以下内容时:
setContentView(R.layout.activity_main);
TextView txtView = (TextView)findViewById(R.id.text);
您将activity_main
布局用作活动的内容。每当您尝试用findViewByid()
绑定视图时,它只会在布局内搜索视图,如果试图在布局外绑定视图,则会出现错误。有关详细信息,请参见setContentView (int layoutResID)。
使用以下内容时:
TextView textView = new TextView(this);
setContentView(textView);
您正在使用new TextView(this);
将活动(this)作为上下文创建TextView。请注意,创建视图时始终需要上下文。
然后使用setContentView(textView);
将textView
设置为活动的唯一内容。有关详细信息,请参见setContentView (View view)。