textView的settext上的android NullPointerException

textView的settext上的android NullPointerException,android,textview,android-debug,Android,Textview,Android Debug,我发布了一个应用程序,它被下载了大约5000次。我已经在4种不同的设备上测试过它,更多的人说它工作得很好,尽管有一些用户为他们缓存了应用程序。代码如下: TextView tv = (TextView) dialog.findViewById(R.id.tv); tv.setText(DariGlyphUtils.reshapeText(MainActivity.this.getResources().getString(R.string.type))); 当有人点击Actio

我发布了一个应用程序,它被下载了大约5000次。我已经在4种不同的设备上测试过它,更多的人说它工作得很好,尽管有一些用户为他们缓存了应用程序。代码如下:

TextView tv = (TextView) dialog.findViewById(R.id.tv);
        tv.setText(DariGlyphUtils.reshapeText(MainActivity.this.getResources().getString(R.string.type)));
当有人点击ActionBar上的imageButton时,它会打开一个对话框,并为其中的TextView设置一个文本。这个对话框上还有大约20个文本视图,我也为它们设置了文本

我需要以实用的方式设置文本,因为语言是波斯语,我应该使用DariGlyphUtils类使文本适合旧设备

您认为它在某些设备上崩溃的问题是什么

这就是全部错误:

STACK_TRACE = java.lang.NullPointerException
    at ir.klach.persiandesigners.MainActivity.onClick(MainActivity.java:966)
    at android.view.View.performClick(View.java:3517)
    at android.view.View$PerformClick.run(View.java:14155)
    at android.os.Handler.handleCallback(Handler.java:605)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4503)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
    at dalvik.system.NativeStart.main(Native Method)

PHONE_MODEL = IdeaTab A2107A-H
ANDROID_VERSION = 4.0.3
Line MainActivity.java:966是第二行tv.setText

你能帮我吗


谢谢

最可能的原因是对话框未显示,因此找不到文本视图。 在开始填充视图之前,简单检查对话框是否显示可能会有所帮助。 或者您只需在自定义对话框中执行此操作,并消除根本原因

顺便说一句:MainActivity.this.getResources.getStringR.string.type->getStringR.string.type

检查此行:

TextView tv = (TextView) dialog.findViewById(R.id.tv);
Weather Textview id tv存在于您在中声明的布局文件中

setContentView(R.layout.<YOUR LAYOUT FILE>);

因为layout文件夹中所有布局文件的所有ID都在R.java文件中声明。因此,您可能正在为声明布局文件中不存在的id创建引用。

首先,将MainActivity.this.getResources.getStringR.string.type更改为getResources.getStringR.string.type。重塑文本是一种静态方法吗?是否调试了空值?请尝试将代码放在第966行。tv为空或getResources返回空值。当然,您的对话框没有所需的视图是的TextView可以为null,activity可以为null,DariGlyphUtils可以为null。您需要调试并检查空值。在应用tv.setText之前,您还应该添加检查以确保没有任何内容为空。您是否可以发布DariGlyphUtils.restrapeText的源代码。对于某些输入,此方法可能返回null。