При попытке запустить код я получаю нулевой указатель на моем ActionProcessButton
и, похоже, не могу найти решение.
Это мой код:
public class ChangePasswordFragment extends Fragment {
@BindView(R.id.old_password)
EditText oldPasswordText;
@BindView(R.id.new_password)
EditText newPasswordText;
@BindView(R.id.connfirm_password)
EditText confirmPasswordText;
@BindView(R.id.done_button)
ActionProcessButton doneButton;
@BindView(R.id.delete_button)
ActionProcessButton deleteButton;
@BindView(R.id.layout)
LinearLayout layout;
@BindView(R.id.animation_view)
LottieAnimationView animationView;
private String mToken;
private Handler mHandler;
private Activity mActivity;
private SharedPreferences mSharedPreferences;
private View mView;
private static final String LOG_TAG = Login.class.getSimpleName();
public ChangePasswordFragment() {
//required public constructor
}
public static ChangePasswordFragment newInstance() {
return new ChangePasswordFragment();
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
mActivity = (Activity) context;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// Inflate the layout for this fragment
mView = inflater.inflate(R.layout.fragment_settings, container, false);
ButterKnife.bind(this, mView);
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mActivity);
mToken = mSharedPreferences.getString(USER_TOKEN, null);
mHandler = new Handler(Looper.getMainLooper());
doneButton.setMode(ActionProcessButton.Mode.ENDLESS);
doneButton.setOnClickListener(v -> {
hideKeyboard();
if (checkEmptyText())
checkPasswordMatch();
});
deleteButton.setOnClickListener(v -> {
deleteAccount();
});
return mView;
}
А это мой XML-файл:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".displayClasses.ChangePassword.ChangePasswordFragment">
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/animation_view"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_gravity="center"
app:lottie_autoPlay="true"
app:lottie_fileName="loading.json"
app:lottie_imageAssetsFolder="images"
app:lottie_loop="true"
android:visibility="gone"/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:id="@+id/layout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginLeft="1dp"
android:layout_marginRight="2dp"
android:layout_marginTop="10dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:paddingTop="2dp"
android:text="@string/change_password_heading"
android:textColor="@color/black"
android:textSize="16sp"
android:id="@+id/change_password_heading"/>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="@color/accent"
app:passwordToggleDrawable="@drawable/ic_remove_red_eye_black_24dp"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/black"
android:layout_marginTop="12dp">
<EditText
android:id="@+id/old_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:ems="10"
android:hint="@string/old_password"
android:inputType="textPassword"
android:textColorHint="@color/accent"/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="@color/accent"
app:passwordToggleDrawable="@drawable/ic_remove_red_eye_black_24dp"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/black"
android:layout_marginTop="12dp">
<EditText
android:id="@+id/new_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:singleLine="true"
android:hint="@string/new_password"
android:inputType="textPassword"/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="@color/accent"
app:passwordToggleDrawable="@drawable/ic_remove_red_eye_black_24dp"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/black"
android:layout_marginTop="12dp">
<EditText
android:id="@+id/connfirm_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ems="10"
android:hint="@string/confirm_password"
android:inputType="textPassword"/>
</android.support.design.widget.TextInputLayout>
<com.dd.processbutton.iml.ActionProcessButton
android:id="@+id/done_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:backgroundTint="@color/primary"
android:text="@string/done_label"
android:textColor="@color/white" />
<com.dd.processbutton.iml.ActionProcessButton
android:id="@+id/delete_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:backgroundTint="@color/primary"
android:text="@string/delete_label"
android:textColor="@color/white" />
</LinearLayout>
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
</RelativeLayout>
Я реализовал необходимые библиотеки и использовал правильный идентификатор.И насколько я знаю, это не должно быть проблемой, что я реализовал это в методе oncreateView()
.
Ошибка, которую я получаю, гласит:
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.dd.processbutton.iml.ActionProcessButton.setMode(com.dd.processbutton.iml.ActionProcessButton$Mode)' on a null object reference
Если вы укажете мне правильное направление, это будет высоко оценено.