Проблема в FirebaseDatabase.getInstance (). Ссылка - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь создать простое приложение для Android со списком задач, используя базы данных kotlin и firebase в реальном времени. Вот mainActivity

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v7.app.AlertDialog
import android.view.View
import android.widget.EditText
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)


    // reference for FAB
    val fab = findViewById<View>(R.id.fab) as FloatingActionButton

    //Adding click listener for FAB
    fab.setOnClickListener { view ->

        //Show Dialog here to add new Item
        addNewItemDialog()

    }

    lateinit var mDatabase: DatabaseReference
    mDatabase = FirebaseDatabase.getInstance().reference

}

class ToDoItem {

    companion object Factory {
        fun create(): ToDoItem = ToDoItem()
    }

    var objectId: String? = null
    var itemText: String? = null
    var done: Boolean? = false
}

object Constants {
    @JvmStatic val FIREBASE_ITEM: String = "todo_item"
}

private fun addNewItemDialog(){

    val alert = AlertDialog.Builder(this)

    val itemEditText = EditText(this)
    alert.setMessage("Add New Item")
    alert.setTitle("Enter To Do Item Text")

    alert.setView(itemEditText)

    alert.setPositiveButton("Submit"){ dialog, positiveButton ->

        val todoItem = ToDoItem.create()
        todoItem.itemText = itemEditText.text.toString()
        todoItem.done = false

        //we first make a push so that a new item is made with a unique id

        val newItem = mDatabase.child(Constants.FIREBASE_ITEM).push()
        todoItem.objectId = newItem.key

        //then, we used the reference to set the value on that ID
        newItem.setValue(todoItem)

        dialog.dismiss()
        Toast.makeText(this, "Item saved with ID" + todoItem.objectId,Toast.LENGTH_SHORT).show()

    }

    alert.show()
}

дайте мне ошибку неразрешенной ссылки: DatabaseReference и неразрешенную ссылку: FloatingActionButton

Вот код для xml (ListView и FloatingActionButton)

<ListView
        android:id="@+id/items_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:scrollbars="none" />

<android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="15dp"
        android:src="@android:drawable/ic_input_add"
        app:elevation="6dp"
        app:pressedTranslationZ="12dp" />

вот зависимости gradle (обе)

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.google.gms:google-services:4.0.1'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
kapt 'com.google.firebase:firebase-core:16.0.5'

}

Где я ошибся ??? Любая помощь будет оценена

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Вам не хватает основных зависимостей, и вам нужно добавить SDK в Build.gradle. Ознакомьтесь с документацией Google с инструкциями:
https://firebase.google.com/docs/android/setup
и, следовательно, кажется, что вы готовы использовать базу данных в реальном времени, добавьте также эту зависимость:
implementation 'com.google.firebase:firebase-database:16.0.4'

0 голосов
/ 18 ноября 2018

Чтобы иметь возможность использовать базу данных Firebase в реальном времени, вам необходимо добавить в ваш файл build.gradle соответствующую зависимость:

implementation 'com.google.firebase:firebase-database:16.0.5'

Сервисы Google также необходимо добавить в качестве последней строки в вашем файле:

apply plugin: 'com.google.gms.google-services'

В этом случае выдается следующее сообщение:

unresolved reference: DatabaseReference

Исчезнет. Теперь, чтобы иметь возможность использовать эту строку кода:

mDatabase = FirebaseDatabase.getInstance().reference

Требуется два импорта:

import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.DatabaseReference;

Относительно второго:

unresolved reference: FloatingActionButton

Это кнопка плавающего действия Design Support, предоставленная Google, которая должна быть добавлена:

implementation 'com.android.support:design:27.1.1'

Это также означает, что вам нужно добавить импорт:

import android.support.design.widget.FloatingActionButton;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...