当前位置: 首页 > 知识库问答 >
问题:

Android messenger应用在登录后崩溃

柯河
2023-03-14

这在LOGCAT中显示;怎么修?

这是我的密码-

private static int SIGN_IN_REQUEST_CODE = 1;
private FirebaseListAdapter<ChatMessage> adapter;
RelativeLayout activity_main;
FloatingActionButton fab;


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if(item.getItemId() == R.id.menu_sign_out)
    {
        AuthUI.getInstance().signOut(this).addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                Snackbar.make(activity_main,"You have been signed out.", Snackbar.LENGTH_SHORT).show();
                finish();
            }
        });
    }
    return true;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu,menu);
    return true;
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == SIGN_IN_REQUEST_CODE)
    {
        if(resultCode ==RESULT_OK)
        {
            Snackbar.make(activity_main,"Successfully signed in.Welcome!", Snackbar.LENGTH_SHORT).show();
            displayChatMessage();
        }
        else
        {
            Snackbar.make(activity_main,"We couldn't sign you in.Please try again later", Snackbar.LENGTH_SHORT).show();
            finish();
        }
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    activity_main = (RelativeLayout) findViewById(R.id.activity_main);
    fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            EditText input = (EditText) findViewById(R.id.input);
            FirebaseDatabase.getInstance().getReference().push().setValue(new ChatMessage(input.getText().toString(), FirebaseAuth.getInstance().getCurrentUser().getEmail()));
            input.setText("");
        }
    });


    //Check if not sign-in then navigate Signin page
    if(FirebaseAuth.getInstance().getCurrentUser() == null)
    {
        startActivityForResult(AuthUI.getInstance().createSignInIntentBuilder().build(),SIGN_IN_REQUEST_CODE);
    }
    else
    {
        Snackbar.make(activity_main,"Welcome "+FirebaseAuth.getInstance().getCurrentUser().getEmail(),Snackbar.LENGTH_SHORT).show();
        //Load content
        displayChatMessage();
    }


}

private void displayChatMessage() {
    ListView listOfMessage = (ListView) findViewById(R.id.list_of_message);
    adapter = new FirebaseListAdapter<ChatMessage>(this,ChatMessage.class,R.layout.list_item,FirebaseDatabase.getInstance().getReference())
    {
        @Override
        protected void populateView(View v, ChatMessage model, int position) {
            //Get references to the views of list_item.xml
            TextView messageText,messageUser,messageTime;
            messageText = (TextView) v.findViewById(R.id.message_text);
            messageUser = (TextView) v.findViewById(R.id.message_user);
            messageTime = (TextView) v.findViewById(R.id.message_time);

            messageText.setText(model.getMessageText());
            messageUser.setText(model.getMessageUser());
            messageTime.setText(DateFormat.format("dd-MM-yyyy (HH:mm:ss)",model.getMessageTime()));

        }
    };
    listOfMessage.setAdapter(adapter);
}

}

分级-

//Add Library
implementation 'com.android.support:design:26.1.0'
implementation 'com.firebaseui:firebase-ui:1.1.1'
implementation 'com.google.firebase:firebase-core:15.0.2'
implementation 'com.google.firebase:firebase-storage:15.0.2'
implementation 'com.google.firebase:firebase-database:15.0.1'
implementation 'com.google.firebase:firebase-auth:15.1.0' // ADDED
implementation 'com.google.android.gms:play-services-auth:15.0.1' // ADDED
implementation 'com.firebaseui:firebase-ui-auth:2.3.0'
implementation('com.facebook.android:facebook-android-sdk:4.22.1')

ChatMessage.java-

public class ChatMessage {
private String messageText;
private String messageUser;
private long messageTime;

public ChatMessage(String messageText, String messageUser) {
    this.messageText = messageText;
    this.messageUser = messageUser;
    messageTime = new Date().getTime();
}

public String getMessageText() {
    return messageText;
}

public String getMessageUser() {
    return messageUser;
}

public long getMessageTime() {
    return messageTime;
}

共有1个答案

颜博达
2023-03-14

您应该在chatmessage.java中添加一个默认构造函数,如下所示。

public class ChatMessage {
    // an empty constructor for Firebase
    public ChatMessage() {

    }

    ...
}
 类似资料:
  • 我是新的Android。我试图将FB登录与我的Android应用程序集成。我已经按照developers.facebook.com的所有说明进行了集成。然而,当我试图运行我的应用程序时,它会在发布时崩溃。 请注意,我的AndroidManifest.xml中已经有Facebook应用程序ID、元数据标签和android活动标签。 布局如下: 以下是my LoginActivity的代码片段: 以下

  • 我使用了新的Google Firebase SDK,现在我们一登录Sinch就崩溃了。 我正在使用以下依赖项

  • 问题内容: 对于典型的最典型的面向Internet的网站,当您通过关闭选项卡( 无需注销 )登录并离开该网站(然后 注销 ),然后再次访问时,可能不需要您重新指定凭据或登录,您可以直接登录。 这一切在后端如何发生?如何在我的JSF 2.1应用程序中启用这种机制? 在Tomcat7服务器上使用JSF 2.1 问题答案: 这基本上是通过一个长寿的cookie完成的。JSF API不提供此功能,因为它只

  • 当我构建我的应用程序并尝试它时,没有任何错误,但当我在google play store上发布我的应用程序并尝试登录Facebook时,它会给我一个错误。这个错误是一个错误的散列键,因为散列键发生了变化(我得到了sign应用程序的散列键,通过许多方式给了我相同的has键,工作正常)这是第一个问题。 我的第二个问题是当尝试使用gmail登录(谷歌登录)获取字段错误。 (您有错误的OAuth2相关配置

  • 这可能是因为UserDefaults在一段时间后会被重置,也可能是因为我经常更新操作系统,但一段时间后我的iOS应用程序的发布版本会在我的登录屏幕上崩溃,很可能是在那里我检查保存的凭据(在UserDefaults中)。重新安装应用程序可以解决这个问题。控制台返回大量: 不支持在主线程外使用UIKit视图自定义API。-SetAlignStoKeyboard:发送到<_UIAlertControll

  • 我尝试在我的unity3d游戏WP8.1中实现facebook登录whit应用程序。在Visual studio中进行调试时,一切工作正常。应用程序从协议启动,从onActivated事件参数,我得到facebook令牌。但当我直接从手机上启动游戏时,没有VS,有时它不是在登录后恢复,而是刚刚重新启动。我尝试使用“调试位置”工具栏调试VS中的OnActivated事件,但当我选择“恢复事件”时,O