Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Intenta invocar el método virtual 'int android.text.Layout.getLineCount ()' en una referencia de objeto nulo

Estoy recibiendo la excepción de puntero nulo aleatoriamente, por lo general funciona y alguna vez se bloquea, había buscado mucho pero no obtuvo ninguna ayuda, ya que no hay una línea adecuada de donde puedo obtener cualquier ayuda,

También estoy usando el manejador con él.

Mi error de logcat es como sigue y el código se agrega debajo de él,

java.lang.NullPointerException: Attempt to invoke virtual method 'int android.text.Layout.getLineCount()' on a null object reference at android.widget.TextView.onMeasure(TextView.java:6703) at android.view.View.measure(View.java:17547) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) at android.view.View.measure(View.java:17547) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:727) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:463) at android.view.View.measure(View.java:17547) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) at android.support.v7.internal.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) at android.view.View.measure(View.java:17547) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) at android.view.View.measure(View.java:17547) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) at android.view.View.measure(View.java:17547) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) at android.view.View.measure(View.java:17547) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2615) at android.view.View.measure(View.java:17547) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2015) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1173) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1379) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) at android.view.Choreographer.doCallbacks(Choreographer.java:580) at android.view.Choreographer.doFrame(Choreographer.java:550) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

Este es mi código de la siguiente manera, aquí suele caer en el clic de registro o olvidar el botón en la primera instalación y después de que por lo general funciona bien, pero a veces me da error,

  public class Login extends AppCompatActivity implements View.OnClickListener,ProcessedResult { private Handler uiThreadHandler; private Context context; private EditText ed_password,ed_Username; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); StorageManager storageManager=new StorageManager(this,"abc"); String accessTokenCheck=storageManager.getValue(Constants.SharedPreferences.LACCESSTOKEN, null); if(accessTokenCheck!=null) GeneralFunctions.moveToNextActivity(MainActivity.class,this); uiThreadHandler = new UIThreadHandler(); new Thread(new Runnable() { @Override public void run() { init(); } }).start(); } //Initialization part private final void init() { context=this; FontsManager.initFormAssets(this, "fonts/Lato-Regular.ttf"); FontsManager.changeFonts(this); TextView myTextView = GeneralFunctions.findViewByIdAndCast(this, R.id.login_tv_noAccount); myTextView.setMovementMethod(new LinkTouchMovementMethod()); myTextView.setHighlightColor(getResources().getColor(android.R.color.transparent)); SpannableString mySpannable = new SpannableString(myTextView.getText().toString()); TouchableSpan touchableSpan = new TouchableSpan(Color.parseColor("#606060"),getResources().getColor(R.color.colorBlue),Color.TRANSPARENT) { @Override public void onClick(View textView) { GeneralFunctions.simpleMoveToNextActivity(Register.class, context); } }; mySpannable.setSpan(touchableSpan, GeneralFunctions.getText(myTextView).indexOf("Register"), GeneralFunctions.getText(myTextView).length(), 0); myTextView.setText(mySpannable, TextView.BufferType.SPANNABLE); TextView tv_forgetPassword = GeneralFunctions.findViewByIdAndCast(this,R.id.login_tv_foregetPassword); GeneralFunctions.setTextColorSelector(Color.parseColor("#606060"),getResources().getColor(R.color.colorBlue),tv_forgetPassword); tv_forgetPassword.setOnClickListener(this); ed_password = (EditText) findViewById(R.id.login_ed_password); ed_Username = (EditText) findViewById(R.id.login_ed_usrName); ed_password.setTransformationMethod(new AsteriskPasswordTransformationMethod()); Button bt_Login= GeneralFunctions.findViewByIdAndCast(this,R.id.login_bt_signin); setSelector(R.drawable.big_green_btn_normal, bt_Login); Button bt_linkedInd= GeneralFunctions.findViewByIdAndCast(this,R.id.login_bt_linkedin); setSelector(R.drawable.big_blue_btn_normal, bt_linkedInd); } private final void setSelector(final int resourceId,final Button button) { button.setOnClickListener(this); try { String name = getNameofResyrce(activity,resourceId); String newString=name.replace("normal","pressed"); StateListDrawable states = new StateListDrawable(); states.addState(new int[] {android.R.attr.state_pressed}, getDrawablebyName(activity,newString)); states.addState(new int[] {android.R.attr.state_focused},getDrawablebyName(activity, newString)); states.addState(new int[]{}, getDrawablebyName(activity, name)); if(view instanceof Button) ((Button)view).setBackground(states); else if(view instanceof ImageView) ((ImageView)view).setImageDrawable(states); } catch (Exception e) { } } public static synchronized Drawable getDrawablebyName(Context context,String name) { Resources resources = context.getResources(); final int resourceId = resources.getIdentifier(name, "drawable", context.getPackageName()); return resources.getDrawable(resourceId); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.login_bt_linkedin: { DWebView transparentDialog = DWebView.newInstance(); showProgressDialog(transparentDialog, Constants.DialogConstants.WEB); } break; case R.id.login_bt_signin: uiThreadHandler.sendEmptyMessage(Constants.ActivityBasicsCode.VALIDATION); break; case R.id.login_tv_foregetPassword: GeneralFunctions.simpleMoveToNextActivity_Without_history(ForgetPassword.class, context); break; } } //Listener part @Override public <IResponse, IMethod> void processedResult(IResponse iResponse, IMethod iMethod) { switch (iMethod.toString()) { case "back": finish(); break; case "showProgress": uiThreadHandler.sendEmptyMessage(Constants.ActivityBasicsCode.SHOWDIALOG); break; case "hideProgress": uiThreadHandler.sendEmptyMessage(Constants.ActivityBasicsCode.HIDEDIALOG); break; } } //Handler part private class UIThreadHandler extends Handler { @Override public void handleMessage(Message msg) { switch (msg.what) { case Constants.ActivityBasicsCode.SETERROR: { CustomException exception=(CustomException)msg.obj; TextView editText=exception.getTextView(); editText.setError(exception.getMessage()); editText.setFocusable(true); editText.requestFocus(); } break; case Constants.ActivityBasicsCode.HIDEDIALOG: hideProgressDialog(Constants.DialogConstants.Transparent); break; case Constants.ActivityBasicsCode.SHOWDIALOG: { DTDialog dtDialog=DTDialog.newInstance(); showProgressDialog(dtDialog,Constants.DialogConstants.Transparent); } break; case Constants.ActivityBasicsCode.VALIDATION: { //Here validation is done in separate thread new Thread(new Runnable() { @Override public void run() { try { if (Validation.validate(Login.this)) GeneralFunctions.moveToNextActivity(MainActivity.class, context); } catch (CustomException e) { //Catch exception for validation is thrown here Message message = uiThreadHandler.obtainMessage(Constants.ActivityBasicsCode.SETERROR); message.obj=e; uiThreadHandler.sendMessage(message); }finally { uiThreadHandler.sendEmptyMessage(Constants.ActivityBasicsCode.HIDEDIALOG); } } }).start(); break; } } super.handleMessage(msg); } } public final<T extends DialogFragment> void showProgressDialog(T currentDialog,String tagName) { FragmentManager fragmentManager =getSupportFragmentManager(); currentDialog.show(fragmentManager, tagName); } public final void hideProgressDialog(String tagName) { FragmentManager fragmentManager =getSupportFragmentManager(); DialogFragment transparentDialog = (DialogFragment)fragmentManager.findFragmentByTag(tagName); if (transparentDialog == null) { return; } transparentDialog.dismiss(); } } 

Archivo XML

 <?xml version="1.0" encoding="utf-8"?> 

 <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_gravity="center" android:gravity="center"> <ImageView style="@style/imageview" android:layout_marginTop="@dimen/_7sdp" android:src="@mipmap/ic_launcher"/> <EditText android:tag="@string/login_emailId_phone" android:layout_marginTop="@dimen/_12sdp" style="@style/edittext" android:drawableLeft="@drawable/user_icon" android:id="@+id/login_ed_emailPhone" android:inputType="text"/> <EditText android:tag="@string/login_password" android:layout_marginTop="@dimen/_12sdp" android:drawableLeft="@drawable/password_icon" android:id="@+id/login_ed_password" android:inputType="textPassword" android:hint="@string/login_password" style="@style/edittext"/> <TextView android:layout_marginTop="@dimen/_11sdp" android:id="@+id/login_tv_foregetPassword" android:text="@string/login_forgetPassword" style="@style/textView" android:textColor="#606060" android:textStyle="normal"/> <Button android:layout_marginTop="@dimen/_30sdp" android:id="@+id/login_bt_signin" style="@style/button" android:text="@string/login_singin" android:background="@drawable/big_green_btn_normal" /> <cl.tempclick.ui.custom_view.LineThroughTextView android:layout_marginTop="@dimen/_12sdp" app:android_textColor="#606060" android:gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" app:lineHeight="@dimen/_2sdp" app:lineColor="@color/colorGray" app:android_textSize="@dimen/_15sdp" app:android_text="@string/login_or" app:textPadding="@dimen/_10sdp"/> <Button android:layout_marginTop="@dimen/_12sdp" android:id="@+id/login_bt_linkedin" style="@style/button" android:text="@string/login_linkedin" android:background="@drawable/big_blue_btn_normal" /> <TextView android:layout_marginTop="@dimen/_12sdp" android:id="@+id/login_tv_noAccount" android:text="@string/login_noAccount" style="@style/textView" android:textStyle="normal" android:textColor="#606060" android:layout_marginBottom="@dimen/_7sdp"/> </LinearLayout> <ViewStub android:id="@+id/login_vs_empty" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:gravity="center" android:layout="@layout/empty_view" /> 

3 Solutions collect form web for “Intenta invocar el método virtual 'int android.text.Layout.getLineCount ()' en una referencia de objeto nulo”

No debería llamar a init() (o cualquier código que toque la interfaz de usuario de Android) en un subproceso no de interfaz de usuario.

Pruebe el método thread.join (), en el que está llamando al método init ().

Creo que el error vino de esta línea

 mySpannable.setSpan(touchableSpan, GeneralFunctions.getText(myTextView).indexOf("Register"), GeneralFunctions.getText(myTextView).length(), 0); 

Intente cerrar la sesión obtendrá el valor de índice & textview texto de gettext (textview) & indexOf () método.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.