Конструктор Event в классе Event <T>не может применяться к данным типам; не удается найти метод символа getTitle () - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь подключить свое приложение к базе данных Firebase, но это дает мне фатальную ошибку исключения: (я не публиковал остальную часть кода, который реализовал ранее, потому что он работал отлично. Сразу после реализации код ниже Я получил ошибку)

package com.example.guideme;

import android.app.DatePickerDialog;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.Html;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.common.api.Status;
import com.google.android.libraries.places.api.Places;
import com.google.android.libraries.places.api.model.Place;
import com.google.android.libraries.places.widget.Autocomplete;
import com.google.android.libraries.places.widget.AutocompleteActivity;
import com.google.android.libraries.places.widget.model.AutocompleteActivityMode;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.example.guideme.Event;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    EditText locationEditText, titleEditText,descriptionEditText;
    Button publish, inviteFriends;
    TextView tvDate;
    ListView listView;
    private static final String TAG ="MainActivity";
    private DatabaseReference mDatabase;
    private DatePickerDialog.OnDateSetListener mDateSetListener;

    public String title, description, date, location;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //hooks to all elements in activity_main.xml
        locationEditText = findViewById(R.id.locationEditText);
        titleEditText = (EditText) findViewById(R.id.titleEditText);
        descriptionEditText = (EditText) findViewById(R.id.descriptionEditText);
        publish = (Button) findViewById(R.id.publish);
        tvDate = (TextView) findViewById(R.id.tvDate);
        inviteFriends = (Button) findViewById(R.id.inviteFriends);
        listView = (ListView) findViewById(R.id.listView);




        mDatabase = FirebaseDatabase.getInstance().getReference();

        mDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                getAllTasks(dataSnapshot);
            }

            @Override
            public void onCancelled(DatabaseError error) {
                //Failed to read value
               Log.w("events", "Failed to read value.", error.toException());
            }
        });

                publish.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                title = titleEditText.getText().toString();
                date = tvDate.getText().toString();
                description = descriptionEditText.getText().toString();
                location = locationEditText.getText().toString();

                String id = title.replaceAll("\\s","");

                writeNewUser(id, title, date, location, description);

                titleEditText.setText("");
                descriptionEditText.setText("");
                tvDate.setText("");
                locationEditText.setText("");

            }
        });


    private void writeNewUser (String eventId, String title, String location, String date, String description){
            Event event = new Event (title, location, date, description);
            mDatabase.child(eventId).setValue(event);
        }

        private void getAllTasks (DataSnapshot dataSnapshot){
        ListView listView = (ListView) findViewById(R.id.listView);
            ArrayList<String> aEvents = new ArrayList<String>();

            for(DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
                Event event = singleSnapshot.getValue(Event.class);
                aEvents.add(event.getTitle());
            }

            ArrayAdapter arrayAdapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, aEvents);
            listView.setAdapter(arrayAdapter);
        }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if ( requestCode == 100 && resultCode == RESULT_OK) {
            Place place = Autocomplete.getPlaceFromIntent(data);
            locationEditText.setText(place.getAddress());

        }else if (resultCode == AutocompleteActivity.RESULT_ERROR){
            Status status = Autocomplete.getStatusFromIntent(data);
            Toast.makeText(getApplicationContext(),status.getStatusMessage(),Toast.LENGTH_SHORT).show();
        }
    }
    //set the Gmail SDK
    public void open (View view) {
        Intent sendIntent = new Intent ();
        sendIntent.setAction(Intent.ACTION_SEND);
        sendIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(new StringBuilder()
                .append("<body><p>Content</p></body>")
                .toString()));
        sendIntent.setType("text/html");
        startActivity(sendIntent);

    }
}

У меня должна быть ссылка на нулевой объект (несуществующая), которую я пытаюсь преобразовать в строку, но я не вижу этой проблемы. Спасибо.

ошибка: java .lang.NullPointerException: попытка вызвать виртуальный метод 'java .lang.String java .lang.Object.toString ()' для ссылки на нулевой объект

1 Ответ

0 голосов
/ 29 мая 2020

Вы получаете следующую ошибку:

не удается найти метод символа getTitle ()

Потому что в этом классе com.google.firebase.events.Event нет метода getTitle(). Однако в вашем проекте есть класс Event, который следует импортировать. Чтобы решить эту проблему, просто измените следующие строки кода:

import com.google.firebase.events.Event;

To:

import com.example.guideme.Event;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...