0
我正在做一个观点,在这里我需要把TextClock,首先它必须是在visibility = gone
,而当一个复选框用户点击时,textclock的知名度必须改变为可见。TextClock在Android是空
布局看起来像这样:(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
编辑15年8月10日 - >发现的解决方案
最后我找到了解决办法。 当我创建的活动,机器人工作室创建了第二个布局,一个新的版本,另一个用于V17,和我使用的ID是作为用于V17布局ID不同。这就是始终为空的原因。
Nope..is仍然空指针 – Shudy
撞毁我找到解决办法......其实问题是setVisibility(View.GONE); .. ..refer http://stackoverflow.com/questions/22645065/how-to-make-analog-clock-invisible-and-visible-on-click-button-android – sasikumar
其实这个问题是相似的,但不一样的,因为,代码永远不会将小部件绑定到对象,这就是为什么我得到“nul” l指针“异常。它崩溃,当因为...我尝试做clock.setVisibility(View.GONE)对象时钟,为空 – Shudy