我正在尝试使用以下代码创建AccessibilityNodeInfo
TextView
:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user);
userTexView = (TextView) findViewById(R.id.userTextView);
userTexView.createAccessibilityNodeInfo();
}
activity_user.xml
<TextView
android:id="@+id/userTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/UserText"
android:contentDescription="@string/UserDescription" />
但是我得到了NullPointerException。
05-20 07:15:14.383 29984 29984 E AndroidRuntime: Caused by: java.lang.NullPointerException
05-20 07:15:14.383 29984 29984 E AndroidRuntime: at android.view.View.onInitializeAccessibilityNodeInfoInternal(View.java:5059)
05-20 07:15:14.383 29984 29984 E AndroidRuntime: at android.view.View.onInitializeAccessibilityNodeInfo(View.java:5004)
05-20 07:15:14.383 29984 29984 E AndroidRuntime: at android.widget.TextView.onInitializeAccessibilityNodeInfo(TextView.java:8048)
05-20 07:15:14.383 29984 29984 E AndroidRuntime: at android.view.View.createAccessibilityNodeInfoInternal(View.java:4965)
05-20 07:15:14.383 29984 29984 E AndroidRuntime: at android.view.View.createAccessibilityNodeInfo(View.java:4952)
05-20 07:15:14.383 29984 29984 E AndroidRuntime: at in.mobilitas.mhealth.ui.MHealthActivity.onCreate(MHealthActivity.java:82)
05-20 07:15:14.383 29984 29984 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:5150)
05-20 07:15:14.383 29984 29984 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
05-20 07:15:14.383 29984 29984 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2192)
05-20 07:15:14.383 29984 29984 E AndroidRuntime: ... 11 more
有人遇到类似的问题吗?
答案 0 :(得分:3)
createAccessibilityNodeInfo()
。请参阅View类的源代码:
void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) {
Rect bounds = mAttachInfo.mTmpInvalRect;
当前视图的边界用于填充AccessibilityNodeInfo
实例,并且在附加视图之前未定义这些实例。
答案 1 :(得分:1)
接受答案是正确的,我只是添加了一种解决方法:
在onCreate中:
View view = (View) findViewById(R.id.my_view);
view.setAccessibilityDelegate(new View.AccessibilityDelegate() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(host, info);
// Do some stuff with info
}
}