我正在做一个视图,我需要放置一个TextClock,首先它必须在visibility = gone
,当用户点击一个复选框时,textclock的可见性必须改为可见
布局如下:( activity_main_activity_2 )
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="1" >
<!-- Title -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/title"
android:id="@+id/title"
android:textSize="25sp"
android:textStyle="bold"
android:layout_weight="0.05"
android:textColor="#000" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/editTitle"
android:layout_weight="0.06"
android:inputType="text" />
</LinearLayout>
<!-- Description -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp" >
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/description"
android:id="@+id/description"
android:layout_weight="0.02"
android:textSize="25sp"
android:textStyle="bold"
android:textColor="#000" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/editDescription"
android:layout_weight="0.04"
android:inputType="text" />
</LinearLayout>
<!-- Time -->
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/time_update">
<TextClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/clock_important"
android:textSize="25sp"/>
</LinearLayout>
<!-- Important -->
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<CheckBox
android:layout_width="match_parent"
android:layout_height="61dp"
android:text="@string/important"
android:id="@+id/important"
android:textSize="25sp"
android:textStyle="bold" />
</LinearLayout>
<!-- Buttons -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<!-- Edit -->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/edit"
android:id="@+id/btn_edit"
android:textStyle="bold"
android:textSize="20sp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_weight="0.05" />
<!-- Cancel -->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cancel"
android:id="@+id/btn_cancel"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_weight="0.05" />
</LinearLayout>
</LinearLayout>
如您所见,时钟的ID为:android:id="@+id/clock_important"
。
然后在我做的活动中:
TextClock clock;
......
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity_2);
clock = (TextClock) findViewById(R.id.clock_important);
clock.setVisibility(View.GONE);
....
这就是问题出现的地方,因为clock
为空。
日志文件
Caused by: java.lang.NullPointerException
at com.dm.ejercicio_1.MainActivity_2.onCreate(MainActivity_2.java:40)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
at dalvik.system.NativeStart.main(Native Method)
我该如何解决?我不知道为什么不给它充气....
P.S:我设置minSdkVersion 17
编辑08/10/15 - &gt;解决方案
最后我找到了解决方案。 当我创建活动时,Android Studio创建了第二个布局,一个用于新版本,另一个用于v17,我使用的id与用于v17布局的AS不同。这个原因总是空的。
答案 0 :(得分:0)
TextClock 更改您的xml,如下所示
<android.widget.TextClock
android:id="@+id/textclock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:timeZone="GMT+0800"
android:format24Hour="MMM dd, yyyy k:mm"
android:format12Hour="@null" />