java - 为什么单击微调器时调试报告会记录 "Attempted to finish an input event but the input event receiver has already been disposed"?

标签 java android android-studio android-spinner

我正在使用带有 ArrayAdapter 的列表作为微调器。但是在选择微调器时,W/InputEventReceiver 记录输入事件接收器已经被释放

适配器在使用方法 .createFromResource() 和静态字符串数组创建时工作正常,但似乎不适用于字符串列表。

这是我的 Activity 代码

package club.bms.keshav.readersreserve;

import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

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;

import java.util.ArrayList;
import java.util.List;

public class TempActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    private List<CharSequence> userList = new ArrayList<>();
    private ArrayAdapter<CharSequence> adapter;
    private Spinner spinner;
    private static final String TAG = "TempActivity";
    private String temp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_temp);
        userList.clear();
        DatabaseReference rootReference = FirebaseDatabase.getInstance().getReference();
        rootReference.child(ConstantFields.DATABASE_USER_LIST).addValueEventListener(new ValueEventListener() {
            String temp;
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for(DataSnapshot dataSnapshot1: dataSnapshot.getChildren())
                {
                    temp = dataSnapshot1.child(ConstantFields.DATABASE_USER_NAME).getValue(String.class);
                    userList.add(temp);
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
            }
        });

        spinner = (Spinner) findViewById(R.id.tempSpinner);
        adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, userList);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setPrompt("SELECT THE CURRENT HOLDER OF THE BOOK");
        Log.d(TAG, "onCreate: Adapter Set");
        spinner.setOnItemSelectedListener(this);
    }


    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        Log.d(TAG, "onItemSelected: ");
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        Log.d(TAG, "onNothingSelected: ");
    }
}

在 itemselectedlistener 方法中没有打印任何日志语句。 这是在单击微调器时打印的日志语句。

W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.

微调器只是在点击时展开。

Before Clicking the Spinner

After Clicking the Spinner

最佳答案

rootReference.child(ConstantFields.DATABASE_USER_LIST).addValueEventListener(new ValueEventListener() {
        String temp;
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for(DataSnapshot dataSnapshot1: dataSnapshot.getChildren())
            {
                temp = dataSnapshot1.child(ConstantFields.DATABASE_USER_NAME).getValue(String.class);
                userList.add(temp);
               if(adapter!=null){
                 adapter.notifyDataSetChanged();
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
        }
    });

关于java - 为什么单击微调器时调试报告会记录 "Attempted to finish an input event but the input event receiver has already been disposed"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53994441/

相关文章:

java - 通过 Netbeans 创建 GUI

java - 如何在只有 "ant update"的 Hybris 中运行 "Update Running System"?

android - 如何在 Android 中创建刮刮卡?

java - AAR 库似乎无法在 Android Studio 0.5.8 中工作。我究竟做错了什么?

安卓工作室 : Is it possible to define library module manifest placeholders in main module?

java - 在 Java 和 Crypto++ 代码之间传递 RSA key

java - C++中Java接口(interface)的等价物?

android - 将数据从一项 Activity 传输到另一项 Activity

Android 无法查找支持版本 27.0.0 的窗口

android - 插入矢量资源后如何在 drawable.xml 中添加图标?