我对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);
}
但应用程序崩溃......
提前干杯!
答案 0 :(得分: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()
。