当在ArrayAdapter中交换数据时,遇到了来自绑定器存根实现的RuntimeException。

31
public class MainActivity extends AppCompatActivity {

     ArrayList<String> list = new ArrayList<>();

     ArrayAdapter<String> adapter;

     ArrayList<String> data1 = new ArrayList<>();

     ArrayList<String> data2 = new ArrayList<>();

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

    for (int i = 0 ; i< 10 ;i++){
        data1.add(String.valueOf(i));
    }

    for (int i = 20; i < 30; i++){
        data2.add(String.valueOf(i));
    }

    Spinner spinner = (Spinner) findViewById(R.id.demo);
    adapter = new ArrayAdapter<>(this,android.R.layout.simple_dropdown_item_1line,list);
    spinner.setAdapter(adapter);
}

private void change(boolean which){
    if (which){
        list.clear();
        list.addAll(data1);

    }else{
        list.clear();
        list.addAll(data2);

    }
    adapter.notifyDataSetChanged();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_no) {
        change(true);
        return true;
    }else if (id == R.id.action_ok){
        change(false);
        return true;
    }

    return super.onOptionsItemSelected(item);
}
  }

当我在下拉菜单中交换数据时,会出现错误:

08-25 11:51:59.630   29087-9866/me.aber.app.arrayapdapterdemo
D/dalvikvm? GC_FOR_ALLOC freed 2055K, 52% free 7378K/15192K, paused 24ms, total 30ms
08-25 11:52:01.923   29087-9866/me.aber.app.arrayapdapterdemo
W/Binder? Caught a RuntimeException from the binder stub implementation.
    java.lang.NullPointerException
at android.view.WindowManagerGlobal.dumpGfxInfo(WindowManagerGlobal.java:437)
at android.app.ActivityThread$ApplicationThread.dumpGfxInfo(ActivityThread.java:1021)
at android.app.ApplicationThreadNative.onTransact(ApplicationThreadNative.java:550)
at android.os.Binder.execTransact(Binder.java:404)
at dalvik.system.NativeStart.run(Native Method)

我点击操作时,这个出现的很随机。


你使用的是哪个SDK版本? - JohnyTex
2
你的问题是什么?你是想找出是什么原因导致了这个错误,还是想知道如何解决它? - JJ Brown
我认为资源ID的类型是long。因此,请将其强制转换为Long而不是int。第二件事是尝试返回false,而不是调用超级调用。 - Gopal Awasthi
这个回答解决了你的问题吗?https://dev59.com/GnVC5IYBdhLWcg3wqzLV - dimo414
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接