为什么单击微调器时调试报告会记录 "Attempted to finish an input event but the input event receiver has already been disposed"?
Why does the debug report logs "Attempted to finish an input event but the input event receiver has already been disposed" on clicking a 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: ");
}
}
None 的日志语句在 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) {
}
});
我正在使用带有 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: ");
}
}
None 的日志语句在 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) {
}
});