我想知道下面两个Toast中两个上下文之间的区别,何时使用此&什么时候使用getActicity?
Toast.makeText(getActivity() , "Text" ,Toast.LENGTH_LONG).show();
Toast.makeText(this , "Text" ,Toast.LENGTH_LONG).show();
答案 0 :(得分:1)
如果您说要尝试从Fragment
访问它,请使用getActivity()
否则如果您自己在Activity
,请使用this
。
答案 1 :(得分:1)
您可以使用Context
或this
指定您的getApplicationContext()
。
getActivity()
与Android Fragments一起使用
答案 2 :(得分:1)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@android:color/white"
android:orientation="vertical"
android:padding="15dp"
android:clickable="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/username"
android:textAppearance="?android:attr/textAppearanceSmall" />
<EditText
android:id="@+id/userName"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="text"
android:text="" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/password"
android:textAppearance="?android:attr/textAppearanceSmall" />
<EditText
android:id="@+id/password"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword"
android:text="" />
<Button
android:id="@+id/loginButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/loginButton" />
</LinearLayout>
实际上是一个指针,指向您所在的当前类。this
可以引用this
,Activity
,Fragment
之类的内容。等等。当使用View
时,传递当前对象的引用。
this
仅在getActivity()
类和任何其他扩展Fragment
的类中可用,此方法返回类型为Fragment
的对象。
答案 3 :(得分:1)
要创建Toast
,您需要一个Context
对象。
如果您在Activity
班级或其他扩展Context
班级的班级,则可以使用this
(因为Activity
本身就是Context
孩子)
例如,如果您在Fragment
课程中,但未扩展Context
,则应使用getActivity()
获取Context
参考。
这里是关于Context
类的文档,您可以在其中找到扩展它的所有类:http://developer.android.com/reference/android/content/Context.html