0

我对 android 开发非常陌生,这基本上是我的第一个应用程序。

我按照 developer.android.com 上的指南和互联网上的其他资源来使用微调器。

在我的主要活动中,我有一个微调器和一个按钮,我想做的是根据微调器所选项目启用(setClickable)按钮。

public class MainMenu extends Activity {    

private Spinner spinner1;   

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

    //Add items to spinner 1 dynamically
    addItemsOnSpinner1();    
    addListenertoSpinner();        
}          

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main_menu, menu);
    return true;
}

public void addItemsOnSpinner1(){
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    List<String> list = new ArrayList<String>();
    list.add("Test 1");
    list.add("Test 2");
    list.add("Add new");
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,list);
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
    spinner1.setAdapter(dataAdapter);       
}

public void addListenertoSpinner(){
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner1.setOnItemSelectedListener(new CustomOnItemSelectedListener());    
}           

}

我已经成功创建了一个 OnItemSelectedListener 类,我可以从中显示微调器选定的项目文本:

public class CustomOnItemSelectedListener extends Activity implements OnItemSelectedListener {

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    // TODO Auto-generated method stub              
    if(parent.getItemAtPosition(pos).toString()== "Add new"){
        Toast.makeText(parent.getContext(), 
                "OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(),
                Toast.LENGTH_SHORT).show();         
    }

}

public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

}
}

我的问题是:

如何设置 Button.setClickable?我尝试做类似的事情:

if(parent.getItemAtPosition(pos).toString()== "Add new"){
        Button b1 = (Button)findViewById(R.id.button1);
        b1.setClickable(true);                                  
    }

但应用程序崩溃...

提前干杯!

4

1 回答 1

1

你不应该仅仅为了一个听众而从活动中扩展。尝试这个

public void addListenertoSpinner(){
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
            if(parent.getItemAtPosition(pos).toString()== "Add new"){
                Button b1 = (Button)findViewById(R.id.button1);
                b1.setClickable(true);                                  
            }

        }

        public void onNothingSelected(AdapterView<?> arg0) {

        }
    });    
} 

这将创建一个匿名类(在 CURRENT 活动的概念内),可以安全地使用findViewById().

于 2012-08-29T02:16:50.387 回答