java.lang.NullPointerException:尝试调用虚拟方法MaterialText

时间:2019-02-20 01:54:33

标签: android nullpointerexception

我遇到以下错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable com.rengwuxian.materialedittext.MaterialEditText.getText()' on a null object reference
        at com.example.batangasbeachhousesfinalserver.HomeFragment$16$1.onSuccess(HomeFragment.java:318)
        at com.example.batangasbeachhousesfinalserver.HomeFragment$16$1.onSuccess(HomeFragment.java:312)
        at com.google.android.gms.tasks.zzn.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6816)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1567)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1455)

我已更新代码*,无法在其中添加任何详细信息。下面是onCreateView代码,并将代码上传到我的数据库中。请为我的项目提供急需的帮助。我试图寻找其他实际上不起作用的解决方案。

这是Home Fragment中的代码:

imageFolder.putFile(saveUri)
    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            mDialog.dismiss();
            Toast.makeText(getActivity(), "Uploaded", Toast.LENGTH_SHORT).show();
            imageFolder.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {
                    newBeach = new Beach();
                    newBeach.setDescription(beach_description.getText().toString());
                    newBeach.setImage(uri.toString());
                    newBeach.setName(beach_name.getText().toString());
                    newBeach.setPrice(beach_price.getText().toString());
                }
            });
        }
    })
    .addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            mDialog.dismiss();
            Toast.makeText(getActivity(),""+e.getMessage(), Toast.LENGTH_SHORT).show();
        }
    })
    .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
            double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
            mDialog.setMessage("Uploaded " + progress + "%");
        }
    });

这是onCreateView:

    @Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    getActivity().setTitle("HOME");

    homeView= inflater.inflate(R.layout.fragment_home, container, false);

    recycler_menu = (RecyclerView)homeView.findViewById(R.id.recycler_menu);
    recycler_menu.setLayoutManager(new LinearLayoutManager(getContext()));


    database = FirebaseDatabase.getInstance();
    storage = FirebaseStorage.getInstance();
    storageReference = storage.getReference();
    beach =database.getReference("Beach Houses");
    cottages =database.getReference("Cottages");
    bigvenues =database.getReference("Big Venues");
    glamping =database.getReference("Glamping");


    beachHouseBTN = (Button) homeView.findViewById(R.id.beachHouseBTN);
    beachHouseBTN.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            menuID.equals("01");
            loadMenuBeach();

        }
    });

    cottagesBTN = (Button) homeView.findViewById(R.id.cottagesBTN);
    cottagesBTN.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            menuID.equals("02");
            loadMenuCottages();

        }
    });

    bigVenuesBTN = (Button) homeView.findViewById(R.id.bigVenuesBTN);
    bigVenuesBTN.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            menuID.equals("03");
            loadMenuBigVenues();

        }
    });


    return homeView;

}

add_new_item_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:fbutton="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardElevation="4dp">

<LinearLayout
    android:layout_margin="20dp"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.rengwuxian.materialedittext.MaterialEditText
        android:id="@+id/beach_item"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="name"
        android:text=""
        android:textColor="@color/colorPrimary"
        android:textColorHint="@color/colorPrimary"
        android:textSize="18sp"
        app:met_baseColor="@color/colorPrimary"
        app:met_floatingLabel="highlight"
        app:met_primaryColor="@color/colorPrimary"
        app:met_singleLineEllipsis="true" />

    <com.rengwuxian.materialedittext.MaterialEditText
        android:id="@+id/beach_description"
        android:layout_width="match_parent"
        android:layout_height="250dp"
        android:gravity="fill_horizontal"
        android:hint="description"
        android:inputType="textMultiLine"
        android:text=""
        android:textColor="@color/colorPrimary"
        android:textColorHint="@color/colorPrimary"
        android:textSize="18sp"
        app:met_baseColor="@color/colorPrimary"
        app:met_floatingLabel="highlight"
        app:met_primaryColor="@color/colorPrimary"
        app:met_singleLineEllipsis="true" />

    <com.rengwuxian.materialedittext.MaterialEditText
        android:id="@+id/beach_price"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="price"
        android:inputType="number"
        android:text=""
        android:textColor="@color/colorPrimary"
        android:textColorHint="@color/colorPrimary"
        android:textSize="18sp"
        app:met_baseColor="@color/colorPrimary"
        app:met_floatingLabel="highlight"
        app:met_primaryColor="@color/colorPrimary"
        app:met_singleLineEllipsis="true" />

    <LinearLayout
        android:weightSum="2"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <Button
            android:id="@+id/btnSelect"
            android:text="SELECT"
            android:textColor="@android:color/white"
            android:layout_marginRight="8dp"
            android:layout_marginLeft="8dp"
            android:layout_alignParentBottom="true"
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_margin="8dp"
            />
        <Button
            android:id="@+id/btnUpload"
            android:text="UPLOAD"
            android:textColor="@android:color/white"
            android:layout_marginRight="8dp"
            android:layout_marginLeft="8dp"
            android:layout_alignParentBottom="true"
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_margin="8dp"

            />

    </LinearLayout>
</LinearLayout>

</android.support.v7.widget.CardView>

HomeFragment扩展了Fragment:

public class HomeFragment extends Fragment
{
private View homeView;
private RecyclerView recycler_menu;
Button beachHouseBTN, cottagesBTN, bigVenuesBTN, glampingBTN;
String menuID="";
FirebaseDatabase database;
FirebaseStorage storage;
StorageReference storageReference;
DatabaseReference beach, glamping, bigvenues, cottages;
FirebaseRecyclerAdapter<Beach, MenuViewHolder> adapter1;
FirebaseRecyclerAdapter<Cottages, MenuViewHolder> adapter2;
FirebaseRecyclerAdapter<BigVenues, MenuViewHolder> adapter3;
FirebaseRecyclerAdapter<Glamping, MenuViewHolder> adapter4;

//Add New Item Layout
MaterialEditText beach_name, beach_description, beach_price;
Button btnSelect, btnUpload;

FloatingActionButton fab;

Beach newBeach;
Cottages newCottage;
BigVenues newBigVenues;

Uri saveUri;
DrawerLayout drawer;
}

1 个答案:

答案 0 :(得分:0)

在您的onCreate内未初始化海滩描述变量。

你需要有类似的东西

MaterialEditText beach_description = (MaterialEditText) getActivity().findViewByID(R.id.beach_description);

那应该可以解决您的问题。