ボタンを押すとすぐにアプリケーションがクラッシュし、firebase経由でメッセージが送信されます。私はこのエラーを修正する方法を知らない。私はたくさん試しましたが、クラッシュを止めることはありません。発生原因:java.lang.RuntimeException:レイアウトをnullにすることはできません。 setLayoutを呼び出します。
私は2つのレイアウトファイルを持っており、それらはlist_item2.xmlとlistitem_chatbox.xmlです。
私はプロジェクトの提出今夜を持っているので、任意のヘルプは本当すぐに高く評価されます、Thnkyou
public class MainActivityChat extends AppCompatActivity{
private static int SIGN_IN_REQUEST_CODE=1;
Query query = FirebaseDatabase.getInstance()
.getReference()
.child("chats")
.limitToLast(50);
FirebaseRecyclerOptions<ChatMessage> options =
new FirebaseRecyclerOptions.Builder<ChatMessage>()
.setQuery(query, ChatMessage.class)
.build();
private FirebaseListAdapter<ChatMessage> adapter;
RelativeLayout listitem_chatbox;
FloatingActionButton fab;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == R.id.nav_logout)
{
AuthUI.getInstance().signOut(this).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Snackbar.make(listitem_chatbox, "YOU HAVE BEEN LOGGED OUT", Snackbar.LENGTH_SHORT).show();
finish();
}
});
}
return true;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == SIGN_IN_REQUEST_CODE)
{
Snackbar.make(listitem_chatbox, "SUCCESSFULLY SIGNED IN, WELCOME!", Snackbar.LENGTH_SHORT).show();
displayChatMessage();
}
else
{
Snackbar.make(listitem_chatbox, "SIGN IN FAILED, TRY LATER!!", Snackbar.LENGTH_SHORT).show();
finish();
}
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listitem_chatbox);
listitem_chatbox = (RelativeLayout)findViewById(R.id.listitem_chatbox);
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(" ");
}
});
if(FirebaseAuth.getInstance().getCurrentUser()==null)
{
startActivityForResult(AuthUI.getInstance().createSignInIntentBuilder().build(), SIGN_IN_REQUEST_CODE);
}
else
{
Snackbar.make(listitem_chatbox, "WELCOME" + FirebaseAuth.getInstance().getCurrentUser().getEmail(), Snackbar.LENGTH_SHORT).show();
//display content
displayChatMessage();
}
}
private void displayChatMessage() {
RecyclerView RV = (RecyclerView) findViewById(R.id.rv_numbers);
LinearLayoutManager LLM = new LinearLayoutManager(this);
RV.setLayoutManager(LLM);
RV.setHasFixedSize(true);
class ChatHolder extends RecyclerView.ViewHolder
{
TextView messageText, messageUser, messageTime;
public ChatHolder(View itemView) {
super(itemView);
messageText = (TextView) findViewById(R.id.message_text);
messageUser = (TextView) findViewById(R.id.message_user);
messageTime = (TextView) findViewById(R.id.message_time);
}
}
FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<ChatMessage, ChatHolder>(options) {
@Override
public ChatHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Create a new instance of the ViewHolder, in this case we are using a custom
// layout called R.layout.message for each item
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_item2, parent, false);
return new ChatHolder(view);
}
@Override
protected void onBindViewHolder(ChatHolder holder, int position, ChatMessage model) {
// Bind the Chat object to the ChatHolder
// ...
holder.messageText.setText(model.getMessageText());
holder.messageUser.setText(model.getMessageUser());
holder.messageTime.setText(DateFormat.format("dd-MM-yyyy (HH:mm:ss)", model.getMessageTime()));
}
@Override
public int getItemCount() {
return super.getItemCount();
}
};
RV.setAdapter(adapter);
}
}
それを修正する方法? @セルビン、私はそれを感謝します、ありがとう –
正しいパラメータをコンストラクタに渡す...どちらが正しいですか?それはドキュメントのすべてです – Selvin
私は正しいと思うパラメータを渡していますが、実際にはそうではないので、私はコードで少し助けが必要だと思います。私もパラメータを再配置しようとしましたが、それは仕事をしませんでした。 –