logcat:
EXCEPTION: main
java.lang.IllegalStateException: Could not find method true(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.widget.TextView
at android.view.View
D
e
c
l
a
r
e
d
O
n
C
l
i
c
k
L
i
s
t
e
n
e
r
.
r
e
s
o
l
v
e
M
e
t
h
o
d
(
V
i
e
w
.
j
a
v
a
:
5438
)
a
t
a
n
d
r
o
i
d
.
v
i
e
w
.
V
i
e
w
DeclaredOnClickListener.resolveMethod(View.java:5438) at android.view.View
DeclaredOnClickListener.resolveMethod(View.java:5438)atandroid.view.ViewDeclaredOnClickListener.onClick(View.java:5397)
at android.view.View.performClick(View.java:6329)
at android.view.View
P
e
r
f
o
r
m
C
l
i
c
k
.
r
u
n
(
V
i
e
w
.
j
a
v
a
:
25002
)
a
t
a
n
d
r
o
i
d
.
o
s
.
H
a
n
d
l
e
r
.
h
a
n
d
l
e
C
a
l
l
b
a
c
k
(
H
a
n
d
l
e
r
.
j
a
v
a
:
809
)
a
t
a
n
d
r
o
i
d
.
o
s
.
H
a
n
d
l
e
r
.
d
i
s
p
a
t
c
h
M
e
s
s
a
g
e
(
H
a
n
d
l
e
r
.
j
a
v
a
:
102
)
a
t
a
n
d
r
o
i
d
.
o
s
.
L
o
o
p
e
r
.
l
o
o
p
(
L
o
o
p
e
r
.
j
a
v
a
:
166
)
a
t
a
n
d
r
o
i
d
.
a
p
p
.
A
c
t
i
v
i
t
y
T
h
r
e
a
d
.
m
a
i
n
(
A
c
t
i
v
i
t
y
T
h
r
e
a
d
.
j
a
v
a
:
7555
)
a
t
j
a
v
a
.
l
a
n
g
.
r
e
f
l
e
c
t
.
M
e
t
h
o
d
.
i
n
v
o
k
e
(
N
a
t
i
v
e
M
e
t
h
o
d
)
a
t
c
o
m
.
a
n
d
r
o
i
d
.
i
n
t
e
r
n
a
l
.
o
s
.
R
u
n
t
i
m
e
I
n
i
t
PerformClick.run(View.java:25002) at android.os.Handler.handleCallback(Handler.java:809) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:166) at android.app.ActivityThread.main(ActivityThread.java:7555) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit
PerformClick.run(View.java:25002)atandroid.os.Handler.handleCallback(Handler.java:809)atandroid.os.Handler.dispatchMessage(Handler.java:102)atandroid.os.Looper.loop(Looper.java:166)atandroid.app.ActivityThread.main(ActivityThread.java:7555)atjava.lang.reflect.Method.invoke(NativeMethod)atcom.android.internal.os.RuntimeInitMethodAndArgsCaller.run(RuntimeInit.java:469)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:963)
起因
一个老项目说是在标题栏里面增加一个按钮(上图下文的),点击这个按钮就有一定几率报错。
分析
Could not find method true(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.widget.TextView
遇到问题,首先看错误日志,找关键词:android:onClick,.TextView
通过这两个,再联想到自己加的控件 上图下文,猜测问题是Textview 有问题;
检查发现:
父布局LinearLayout有个android:clickable=“true”,
子控件TextView 也有android:clickable=“true”
<LinearLayout
android:layout_marginLeft="5dp"
android:id="@+id/fire_location_revise"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:clickable="true"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/relocate_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_relocate" />
<TextView
android:id="@+id/tv_relocate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:text="文字描述"
android:textSize="14sp" />
</LinearLayout>
解决
实际上 Textview的点击事件也没用,可能是复制代码的时候复制进去了。
根据实际情况留下父布局LinearLayout的android:clickable="true"就行了!