Realtime database Frage für Android

09/14/2017 07:33 .K0rí#1
Hallo epvp,

Ich bin neu in der app Entwicklung und habe mal eine Frage.

Ich nutze von firebase die Realtime database und möchte einen output haben in dem toast

Hier meine mainactivity

HTML Code:
package com.koridevbrowser.app;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

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;


public class MainActivity extends AppCompatActivity  implement ValueEventListener{

private TextView mText;
private WebView mWebView;
ProgressBar progressBar;
private Toolbar toolbar;


private DatabaseReference database = FirebaseDatabase.getInstance().getReference();
private DatabaseReference mconf = database.child("version");

 [MENTION=295804]Override[/MENTION]
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    toolbar = (Toolbar) findViewById(R.id.app_bar);
    setSupportActionBar(toolbar);

    mText = (TextView) findViewById(R.id.About);

    mWebView = (WebView) findViewById(R.id.activity_main_webview);

    progressBar = (ProgressBar) findViewById(R.id.progressBar1);

    String userAgent = mWebView.getSettings().getUserAgentString();
    mWebView.getSettings().setUserAgentString(userAgent);
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    mWebView.loadUrl("http://www.********************");
    mWebView.setWebChromeClient(new WebChromeClient());
    mWebView.setWebViewClient(new HelloWebViewClient());

}


 [MENTION=295804]Override[/MENTION]
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_main, menu);
    return super.onCreateOptionsMenu(menu);
}

 [MENTION=295804]Override[/MENTION]
public boolean onOptionsItemSelected(final MenuItem item) {
    switch (item.getItemId()) {
        case R.id.home:
            mWebView.loadUrl("http://********************/");
            return true;
        case R.id.KoriFiles:
            mWebView.loadUrl("http://********************/forum/11-koridev-releases/");
            return true;
        case R.id.KoriRules:
            mWebView.loadUrl("http://********************/forum/26-foren-regeln/");
            return true;
        case R.id.KoriDonate:
            mWebView.loadUrl("http://********************/store/");
            return true;
        case R.id.KoriContact:
            mWebView.loadUrl("http://********************/contact/");
            return true;
        case R.id.KoriAbout:
            Toast.makeText(MainActivity.this, "Version: 0.3b", Toast.LENGTH_LONG).show();

            return true;
        default:
            return super.onOptionsItemSelected(item);


    }
}

 [MENTION=295804]Override[/MENTION]
public void onDataChange(DataSnapshot dataSnapshot) {
    if (dataSnapshot.getValue(String.class) !=null) {
        String value = dataSnapshot.getKey();
        if(value.equals("version")) {
            String text = dataSnapshot.getValue(String.class);
            mText.setText(text);
        }
    }

}

 [MENTION=295804]Override[/MENTION]
public void onCancelled(DatabaseError databaseError) {

}


private class HelloWebViewClient extends WebViewClient{


    [MENTION=295804]Override[/MENTION]
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
    }

    [MENTION=295804]Override[/MENTION]
    public boolean shouldOverrideUrlLoading(WebView webView, String url)
    {
        webView.loadUrl(url);
        return true;
    }

    [MENTION=295804]Override[/MENTION]
    public void onPageFinished(WebView view, String url) {
        // TODO Auto-generated method stub
        super.onPageFinished(view, url);

        progressBar.setVisibility(view.GONE);
    }

}


 [MENTION=295804]Override[/MENTION]
public boolean onKeyDown(int keyCode, KeyEvent event) { //if back key is pressed
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
        mWebView.goBack();
        return true;

    }

    return super.onKeyDown(keyCode, event);

}

public void onBackPressed() {
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
            MainActivity.this);

    // set title
    alertDialogBuilder.setTitle("Exit");

    // set dialog message
    alertDialogBuilder
            .setMessage("Do you really want to exit KoriDev?")
            .setCancelable(false)
            .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    // if this button is clicked, close
                    // current activity
                    MainActivity.this.finish();
                }
            })
            .setNegativeButton("No",new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    // if this button is clicked, just close
                    // the dialog box and do nothing
                    dialog.cancel();
                }
            });

    // create alert dialog
    AlertDialog alertDialog = alertDialogBuilder.create();

    // show it
    alertDialog.show();

}
}
Nun möchte ich das der Wert meiner database hier ausgeben wird :
HTML Code:
Toast.makeText(MainActivity.this, "Version: 0.3b", Toast.LENGTH_LONG).show();
Die normale API von firebase schaut so aus :


HTML Code:
irebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("version");

// Read from the database
myRef.addValueEventListener(new ValueEventListener() {
    [MENTION=295804]Override[/MENTION]
    public void onDataChange(DataSnapshot dataSnapshot) {
        // This method is called once with the initial value and again
        // whenever data at this location is updated.
        String value = dataSnapshot.getValue(String.class);
        Log.d(TAG, "Value is: " + value);
    }

    [MENTION=295804]Override[/MENTION]
    public void onCancelled(DatabaseError error) {
        // Failed to read value
        Log.w(TAG, "Failed to read value.", error.toException());
    }
});
Also ich müsste es wieder auf die Standard API zurücksetzen das weiß ich aber wie lasse ich mir die value ausgeben? Ich habe via stackoverflow.com schon gefragt aber da kommt nichts mehr

Link dazu
[Only registered and activated users can see links. Click Here To Register...]