4

現在のプロジェクトでバターナイフを使用しています。Kitkat と lollipop では正常に動作しますが、jellybean (4.2) では nullpointer 例外がスローされます。

この行で例外がスローされます (btnLogin は NULL です)

btnLogin.setTypeface(FontsHelper.robotoRegular(this));

活動コード

public class Login extends Activity {
    @Bind(R.id.btnLogin)
    FButton btnLogin;

    @Bind(R.id.btnRegister)
    FButton btnRegister;

    @Bind(R.id.edtEmail)
    EditText edtEmail;

    @Bind(R.id.edtPassword)
    EditText edtPassword;

    @Bind(R.id.rlProgress)
    RelativeLayout rlProgress;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        ButterKnife.bind(this);
        System.out.println("Binding password" + edtPassword); //prints null
        System.out.println("Binding "+btnLogin); //prints null
        btnLogin.setTypeface(FontsHelper.robotoRegular(this));
    }
}

レイアウト....

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:weightSum="1"
    android:orientation="vertical"
    android:gravity="center">
    <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content"
        android:layout_height="0dp" android:src="@drawable/lm_logo_with_text"
        android:layout_weight="0.5"  android:paddingLeft="@dimen/pad_40dp"
        android:paddingRight="@dimen/pad_40dp"
        android:gravity="center_horizontal|center_vertical"/>
    <LinearLayout android:id="@+id/llContent" android:layout_width="match_parent"
        android:layout_height="0dp" android:layout_weight="0.5"
        android:orientation="vertical"  android:paddingLeft="@dimen/pad_40dp" android:paddingRight="@dimen/pad_40dp">
        <EditText android:id="@+id/edtEmail" android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:hint="Email"
            android:drawableLeft="@drawable/ic_email" android:inputType="textEmailAddress" style="@style/txt_white">
            <requestFocus />
        </EditText>
        <View android:background="@color/gray"
            android:layout_width="fill_parent" android:layout_height="@dimen/divider" android:layout_marginTop="@dimen/pad_16dp" />
        <EditText android:id="@+id/edtPassword" android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:hint="Password"
            android:drawableLeft="@drawable/ic_pwd" android:inputType="textPassword" style="@style/txt_white" />
        <View  android:background="@color/gray"
            android:layout_width="fill_parent" android:layout_height="@dimen/divider" />
        <View android:background="@color/gray"
            android:layout_width="fill_parent" android:layout_height="@dimen/divider" android:layout_marginTop="@dimen/pad_16dp"
            android:visibility="gone"/>
        <EditText android:id="@+id/edtEmailUnused" android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:hint="Email address"
            android:drawableLeft="@drawable/ic_pwd" android:inputType="textEmailAddress" style="@style/txt_white"
            android:visibility="gone"/>
        <info.hoang8f.widget.FButton
            android:layout_width="fill_parent" android:layout_height="50dp"
            android:id="@+id/btnLogin"
            android:textColor="@color/white"
            fbutton:buttonColor="@color/picton_blue"
            fbutton:shadowColor="@color/san_marino"
            fbutton:shadowEnabled="true"
            fbutton:shadowHeight="2dp"
            fbutton:cornerRadius="2dp"
            android:text="Login"
            android:layout_marginBottom="@dimen/pad_10dp"
            android:layout_marginTop="@dimen/pad_40dp"
            android:padding="@dimen/pad_15dp"
            />
        <info.hoang8f.widget.FButton
            android:layout_width="fill_parent" android:layout_height="50dp"
            android:id="@+id/btnRegister"
            android:textColor="@color/white"
            fbutton:buttonColor="@color/niagara"
            fbutton:shadowColor="@color/san_marino"
            fbutton:shadowEnabled="true"
            fbutton:shadowHeight="2dp"
            fbutton:cornerRadius="2dp"
            android:text="Register"
            android:layout_marginBottom="@dimen/pad_40dp"
            android:layout_marginTop="@dimen/pad_5dp"
            android:padding="@dimen/pad_15dp"
            android:onClick="gotoHome"
            />


        <Button android:id="@+id/btnFb" android:background="@drawable/btn_fb"
            android:layout_width="fill_parent" android:layout_height="wrap_content" style="@style/btn" android:visibility="gone"/>


    </LinearLayout>
</LinearLayout>
<RelativeLayout
    android:id="@+id/rlProgress"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/white_45_percent"
    android:clickable="true"
    android:animateLayoutChanges="true"
    android:visibility="gone"
    xmlns:wheel="http://schemas.android.com/apk/res-auto">
    <com.pnikosis.materialishprogress.ProgressWheel
        android:id="@+id/progress_wheel"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        wheel:matProg_barColor="#555588FF"
        wheel:matProg_progressIndeterminate="true" />
</RelativeLayout>

スタックトレース

java.lang.RuntimeException: Unable to start activity ComponentInfo{lifemedico.array.com.lifemedico/lifemedico.array.com.lifemedico.ui.login.Login}: java.lang.NullPointerException
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
    at android.app.ActivityThread.access$600(ActivityThread.java:141)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5041)
    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:793)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
    at lifemedico.array.com.lifemedico.ui.login.Login.onCreate(Login.java:52)
    at android.app.Activity.performCreate(Activity.java:5104)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
    ... 11 more
java.lang.NullPointerException
    at lifemedico.array.com.lifemedico.ui.login.Login.onCreate(Login.java:52)
    at android.app.Activity.performCreate(Activity.java:5104)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
    at android.app.ActivityThread.access$600(ActivityThread.java:141)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5041)
    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:793)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    at dalvik.system.NativeStart.main(Native Method)

lollipop と kitkat にはこれまでのところ問題はありませんが、デバッグ ステートメントは両方ともジェリー ビーンに null を出力します。これが失敗する理由は考えられません。どんな助けも大歓迎です。

ありがとう

編集:

バターナイフにデバッグオプションを追加すると、これが見つかりませんでした。スーパークラス android.support.v7.app.ActionBarActivityd MISS を試しています: フレームワーク クラスに到達しました。検索放棄。一部のオンライン検索でプロガードが指摘されましたが、私はプロガードを使用しておらず、これはまだデバッグ バージョンです。

4

3 に答える 3