Ich habe ein Problem, das ich nicht lösen kann. Ich möchte eine Echtzeit-Datenbank mit Firabase erstellen, aber wenn ich zu dieser Aktivität gehe, halte ich das System an. Ich habe alles versucht, aber ich kann dieses Problem nicht lösen. Ich bin ein Anfänger, also ist es schwierig für mich. Bitte helfen ..com.google.firebase.database.DatabaseException: Objekt vom Typ java.lang.String kann nicht in Typ 3 konvertiert werden
09-01 08:57:57.018 2787-2787/sgtt.celtkituzes_0_1 E/AndroidRuntime: FATAL EXCEPTION: main
Process: sgtt.celtkituzes_0_1, PID: 2787
com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type sgtt.celtkituzes_0_1.AimToAim
at com.google.android.gms.internal.zzaln.zzd(Unknown Source)
at com.google.android.gms.internal.zzaln.zzb(Unknown Source)
at com.google.android.gms.internal.zzaln.zza(Unknown Source)
at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
at com.firebase.ui.database.FirebaseRecyclerAdapter.parseSnapshot(FirebaseRecyclerAdapter.java:147)
at com.firebase.ui.database.FirebaseRecyclerAdapter.getItem(FirebaseRecyclerAdapter.java:136)
at com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:176)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5471)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5504)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4741)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4617)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1994)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1390)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1353)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:549)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3028)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2906)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3283)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1076)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:15671)
at android.view.ViewGroup.layout(ViewGroup.java:5038)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2086)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1843)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android
Anmeldung Aktivität
package sgtt.celtkituzes_0_1;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.backendless.Backendless;
import com.backendless.BackendlessUser;
import com.backendless.async.callback.AsyncCallback;
import com.backendless.exceptions.BackendlessFault;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
public class LoginActivity extends AppCompatActivity {
public static final String APP_ID = "yyy";
public static final String SECRET_KEY = "xxx";
public static final String VERSION = "v1";
// private BroadcastReceiver mRegistrationBroadcastReceiver;
private CheckBox saveLoginCheckBox;
private SharedPreferences loginPreferences;
private SharedPreferences.Editor loginPrefsEditor;
private Boolean saveLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
saveLoginCheckBox = (CheckBox)findViewById(R.id.checkBox);
loginPreferences = getSharedPreferences("loginPrefs", MODE_PRIVATE);
loginPrefsEditor = loginPreferences.edit();
final EditText etEmail = (EditText) findViewById(R.id.etEmail);
final EditText etPassword = (EditText) findViewById(R.id.etPassword);
final Button bLogin = (Button) findViewById(R.id.bLogin);
final TextView registerLink = (TextView) findViewById(R.id.tvRegisterHere);
final TextView passwordLink = (TextView) findViewById(R.id.tvRePasswod);
saveLogin = loginPreferences.getBoolean("saveLogin", false);
if (saveLogin == true) {
etEmail.setText(loginPreferences.getString("email", ""));
etPassword.setText(loginPreferences.getString("password", ""));
saveLoginCheckBox.setChecked(true);
}
/* mRegistrationBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().endsWith(GCMRegistrationIntentService.REGISTRATION_SUCCESS)){
String token = intent.getStringExtra("token");
Toast.makeText(getApplicationContext(), "GCM token:" + token, Toast.LENGTH_LONG).show();
}else if(intent.getAction().equals(GCMRegistrationIntentService.REGISTRATION_ERROR)){
Toast.makeText(getApplicationContext(), "GCM registration error!!", Toast.LENGTH_LONG).show();
}
}
};*/
/* //Check status on google play device
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
if(ConnectionResult.SUCCESS != resultCode){
//Check type of error
if(GooglePlayServicesUtil.isUserRecoverableError(resultCode)){
Toast.makeText(getApplicationContext(), "Google Play Service is not install/enabled in this device!", Toast.LENGTH_LONG).show();
//So notification
GooglePlayServicesUtil.showErrorNotification(resultCode, getApplicationContext());
}else{
Toast.makeText(getApplicationContext(), "This device does not support for Google Play Service!", Toast.LENGTH_LONG).show();
}
}else {
//Start service
Intent itent = new Intent(this, GCMRegistrationIntentService.class);
startService(itent);
}*/
//regisztráció
registerLink.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent registerIntent = new Intent(LoginActivity.this, RegisterActivity.class);
LoginActivity.this.startActivity(registerIntent);
}
});
//jelszó emlékeztető
passwordLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String mailforpsw = etEmail.getText().toString();
Backendless.UserService.restorePassword(mailforpsw, new AsyncCallback<Void>()
{
public void handleResponse(Void response)
{
Toast.makeText(getApplicationContext(),"Az új jelszó elküldve a megadott email címre!", Toast.LENGTH_SHORT).show();
}
public void handleFault(BackendlessFault fault)
{
Toast.makeText(getApplicationContext(),"Hiba!", Toast.LENGTH_SHORT).show();
}
});
}
});
//bejelentkezés
bLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(etEmail.getWindowToken(), 0);
String email = etEmail.getText().toString();
String password = etPassword.getText().toString();
if (saveLoginCheckBox.isChecked()) {
loginPrefsEditor.putBoolean("saveLogin", true);
loginPrefsEditor.putString("email", email);
loginPrefsEditor.putString("password", password);
loginPrefsEditor.commit();
} else {
loginPrefsEditor.clear();
loginPrefsEditor.commit();
}
Backendless.UserService.login(email, password, new AsyncCallback<BackendlessUser>() {
@Override
public void handleResponse(BackendlessUser response) {
Toast.makeText(getApplicationContext(),"Sikeres bejelentlezés",Toast.LENGTH_SHORT).show();
Intent loginIntent = new Intent(LoginActivity.this, AimActivity.class);
LoginActivity.this.startActivity(loginIntent);
}
@Override
public void handleFault(BackendlessFault fault) {
Toast.makeText(getApplicationContext(),"Sikertelen bejelentlezés",Toast.LENGTH_SHORT).show();
}
});
}
});
Backendless.initApp(this, APP_ID, SECRET_KEY, VERSION);
}
/*@Override
protected void onResume() {
super.onResume();
Log.w("UserAreaActivity", "onResume");
LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver, new IntentFilter(GCMRegistrationIntentService.REGISTRATION_SUCCESS));
LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver, new IntentFilter(GCMRegistrationIntentService.REGISTRATION_ERROR));
}
@Override
protected void onPause() {
super.onPause();
Log.w("UserAreaActivity", "onPause");
LocalBroadcastManager.getInstance(this).unregisterReceiver(mRegistrationBroadcastReceiver);
}*/
}
AimActivity
package sgtt.celtkituzes_0_1;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
import android.content.SharedPreferences;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
public class AimActivity extends AppCompatActivity implements
GoogleApiClient.OnConnectionFailedListener{
public static class AimViewHolder extends RecyclerView.ViewHolder{
public TextView aimName;
public TextView aimText;
public TextView aimUrl;
public AimViewHolder(View v){
super(v);
aimName = (TextView)itemView.findViewById(R.id.name);
aimText = (TextView)itemView.findViewById(R.id.text);
aimUrl = (TextView)itemView.findViewById(R.id.url);
}
}
public static final String AIMS = "aims";
private RecyclerView mAimRecyclerView;
private LinearLayoutManager mLinearLayoutManager;
public static DatabaseReference mFirebaseDatabaseReference;
private FirebaseRecyclerAdapter<AimToAim, AimViewHolder> mFirebaseAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_aim);
mAimRecyclerView = (RecyclerView)findViewById(R.id.aimRecyclerView);
mLinearLayoutManager = new LinearLayoutManager(this);
mLinearLayoutManager.setStackFromEnd(true);
mAimRecyclerView.setLayoutManager(mLinearLayoutManager);
//Database Initialization
mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference();
mFirebaseAdapter = new FirebaseRecyclerAdapter<AimToAim, AimViewHolder>(
AimToAim.class,
R.layout.activity_aim_to_aim,
AimViewHolder.class,
mFirebaseDatabaseReference.child(AIMS)) {
@Override
protected void populateViewHolder(AimViewHolder viewHolder, AimToAim model, int position) {
viewHolder.aimName.setText(model.getName());
viewHolder.aimText.setText(model.getText());
viewHolder.aimUrl.setText(model.getUrl());
}
};
mFirebaseAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver(){
@Override
public void onItemRangeInserted(int positionStart, int itemCount){
super.onItemRangeInserted(positionStart, itemCount);
int aimCount = mFirebaseAdapter.getItemCount();
int lastVisiblePosition = mLinearLayoutManager.findLastCompletelyVisibleItemPosition();
if (lastVisiblePosition == -1 || (positionStart >= (aimCount -1) && lastVisiblePosition == (positionStart -1))){
mAimRecyclerView.scrollToPosition(positionStart);
}
}
});
mAimRecyclerView.setLayoutManager(mLinearLayoutManager);
mAimRecyclerView.setAdapter(mFirebaseAdapter);
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
}
AimToAim
package sgtt.celtkituzes_0_1;
/**
* Created by Storg on 2016.08.27..
*/
public class AimToAim {
private String name;
private String text;
private String url;
public AimToAim(){
}
public AimToAim(String name, String text, String url){
this.name = name;
this.text = text;
this.url = url;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
activity_aim xml
012.351.<?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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="sgtt.celtkituzes_0_1.AimActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/aimRecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
AimToAim_xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeightLarge">
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="Name"
android:textAppearance="?android:attr/textAppearanceLarge"
android:paddingLeft="16dp"/>
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="Address"
android:textAppearance="?android:attr/textAppearanceMedium"
android:paddingLeft="16dp"/>
<TextView
android:id="@+id/url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="url"
android:textAppearance="?android:attr/textAppearanceMedium"
android:paddingLeft="16dp"/>
</LinearLayout>
bitte zeigen, wo genau Ihre Anwendung abgestürzt ist, können Sie die logcat inspizieren, wenn der Fehler auftritt und Sie können diese Anleitung folgen [Wie Ihre Anwendung debuggen] (https: // Entwickler. android.com/studio/debug/index.html) – Wilik
machen ure, dass das Modell in Ihrer App und firebase sind –
Ich bin sicher. Ich habe es mehrmals überprüft:/ – Storg