プログラミングを始めてから私が今までにない奇妙なエラーに悩まされています。私はボタンにテキストを設定しています。何もそこに複雑です!私は、内のテキストを記録することができますので、私はそのテキストとcell.getTextを(設定する前に、それにいくつかの他のものを渡されましたので、Button.setText(mText)のAndroid奇妙なヌルオブジェクトリファレンス
btnButton.setText(cell.getText());
btnButtonが存在する)のいずれかnullではない:
私はこの方法はそれを行います私のコンソール。
それでも、私はこの奇妙なエラーが出ます:
03-31 14:58:35.407 24398-24398/ca.gggolf.agggolf.full E/AndroidRuntime: FATAL EXCEPTION: main
Process: ca.gggolf.agggolf.full, PID: 24398
java.lang.NullPointerException: Attempt to read from field 'int android.view.ViewGroup$LayoutParams.width' on a null object reference
at android.widget.TextView.checkForRelayout(TextView.java:6836)
at android.widget.TextView.setText(TextView.java:4063)
at android.widget.TextView.setText(TextView.java:3921)
at android.widget.TextView.setText(TextView.java:3896)
at ca.gggolf.agggolf.activities.fragments.AutoGridFragment.displayAutoGridBody(AutoGridFragment.java:467)
at ca.gggolf.agggolf.activities.fragments.AutoGridFragment.createAutogridBody(AutoGridFragment.java:206)
at ca.gggolf.agggolf.activities.fragments.AutoGridFragment.onCreate(AutoGridFragment.java:94)
at android.support.v4.app.Fragment.performCreate(Fragment.java:1939)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1029)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517)
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:5343)
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:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
は、誰かが私はこの問題を解決する手助けすることはできますか?それは時々動作しますが、アプリケーションのどこから来ているかによって異なります。
ありがとうございます!
EDIT ボタンを作成するときのコードは次のとおりです。私はそれが幅と最初のテキストを割り当て、テキストを切り捨てる必要がある場合、私は私のボタンがそれ以外の場合は私が与えたサイズに収まることを確認するために測定、私はそれをtextViewに変更します。 それは私がエラーを与える後に私はそれを正常に戻すことです。
Button btnButton = new Button(getActivity());
btnButton.setWidth(width);
btnButton.setText(cell.getText());
if(adjustedAutogrid.getColumn(indexCell).isTruncated()){
btnButton.setText("…");
btnButton.measure(0, 0);
if(btnButton.getMeasuredWidth() > width){
TextView btnText = new TextView(getActivity());
btnText.setWidth(width);
btnText.setText(cell.getText());
cell.getCSS().applyToTextView(btnText);
btnText.setEllipsize(TextUtils.TruncateAt.END);
btnText.setLines(1);
layout.addView(btnText);
break;
}
btnButton.setText(cell.getText());
btnButton.setEllipsize(TextUtils.TruncateAt.END);
btnButton.setLines(1);
}
そして、問題の原因を疑問に思っている人にとっては、ちょっと複雑です。私はインターネット(XML)を介して私が表示するテーブルに変換する情報を受け取ります。さまざまな細胞に適切なサイズと内容を設定する必要があります。私たちはAutoGridは、XMLから来呼んでロードすると、すべての私のAutoGridは1を除いて動作します...
編集2 私はellipsize記号(...)にテキストを残せばすべてが正常に動作します。それは本当に私はそれが動作しないテキストを再度設定しようとしています..
どのようにして 'btnButton'への参照を取得しましたか? 'findViewById()'を使ったのか、それとも自分で作成したのですか?ボタンの 'LayoutParams'がnullであるようです。 –
自分自身で作成し、使用方法がわからないためにlayoutParamsを割り当てていないので、私のアプリの特定の場所から来たときに問題が発生しただけです。 – dequec64
ボタンを手動で作成しているようです'Fragment.onCreate()'は、 'Fragment.onCreateView()'で行わなければなりません)。 LayoutParamsに幅と高さの指定を割り当てていないと、ビューをレイアウトすることはできません。これがAndroidの仕組みです。したがって、'ViewGroup $ LayoutParams.width'のNullpointerException – sockeqwe