【问题标题】:Setting a spinner item selected depending on an Intent Extras value根据 Intent Extras 值设置选择的微调器项目
【发布时间】:2012-08-25 18:07:13
【问题描述】:

我的活动中有一个微调器,从数据库中填充,如果活动获得带有附加功能的 Intent,我想从根据附加功能选择的微调器中设置一个项目。例如 - 如果我有一个额外的“CURR_NOTE_CATEGORY”并且它的值为 2,我希望选择微调器中的第二个项目。没有额外的东西 - 只是普通的微调器。 所以我有这个代码:

int curr_note_category;

ArrayAdapter<String> adapter;
NotesManager manager = new NotesManager(this);
ArrayList<Category> arrListCategories; 
ArrayList<String> arrListCategoriesString = new ArrayList<String>();
Spinner spCategories;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_edit_note);

    spCategories = (Spinner) findViewById(R.id.spCategories);

    if(getIntent().getExtras()!=null){
        // Get Extras
        curr_note_category = getIntent().getExtras().getInt("CURR_NOTE_CATEGORY");

        spCategories.setSelection(curr_note_category);

    }

    manager.getAllCategories();
    arrListCategories = manager.getAllCategories();

    for (int i = 0; i < arrListCategories.size(); i++) 
    {
        Category currCategory = arrListCategories.get(i);
        arrListCategoriesString.add(currCategory.getCategory_name().toString());            
    }

    adapter=new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, arrListCategoriesString);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spCategories.setAdapter(adapter);
    spCategories.setOnItemSelectedListener(spinnerListener);
}

我得到的是常规微调器,但当有 Intent Extra 时,我从来没有选择过项目。那么如何实现呢?

【问题讨论】:

    标签: android android-intent spinner selection extra


    【解决方案1】:

    请在setOnItemSelectedListener();之后输入您的微调器组选择代码

    adapter=new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, arrListCategoriesString);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spCategories.setAdapter(adapter);
    spCategories.setOnItemSelectedListener(spinnerListener);
    
    if(getIntent().getExtras()!=null)
    {
        // Get Extras
        curr_note_category = getIntent().getExtras().getInt("CURR_NOTE_CATEGORY");
    
        spCategories.setSelection(curr_note_category);
    }
    

    【讨论】:

    • 是的,我还移动了manger.getAllCategories(); arrListCategories = manager.getAllCategories(); 和循环。我发生了崩溃,但在查看了 LogCat 之后,我将 curr_note_category 分配更改为 curr_note_category = getIntent().getExtras().getInt("CURR_NOTE_CATEGORY")-1;,现在它可以工作了!非常感谢! :)
    • 嗯,经过进一步测试,我发现它运行不顺畅。这就是问题所在 - 如果我按顺序在数据库中拥有所有项目,则我上面提到的代码可以正常工作:1、2、3、4 等...但是如果我删除一个类别并添加另一个类别,(这样现在 ID 的顺序是,例如,1、2、4、5、6 等),那么在后面的类别中,应用程序会崩溃。我收到此错误消息:“java.lang.IndexOutOfBoundsException: Invalid index 4, size is 4”。我在这里上传了完整的日志文本:link我该如何解决?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    相关资源
    最近更新 更多