我想设计一个应用程序,其中有两个按钮。当我们逐个按下每个按钮时,它会显示一些内容列表。
为此,我使用以下代码:
this.findViewById( R.id.UpdateList ).setOnClickListener( this );
this.findViewById( R.id.SettingsList ).setOnClickListener(buttonclicked);
有了这个我正在创造butttons。点击,我正在使用:
ArrayList<String> smsList = new ArrayList<String>();
public void onClick( View v ) {
//My list content for first button
}
private OnClickListener buttonclicked = new OnClickListener() {
public void onClick( View v ) {
//My list content for second button
}
ListView settingsListView = (ListView) findViewById( R.id.SETTINGSList );
settingsListView.setAdapter( new ArrayAdapter<String>( (Context) buttonclicked , android.R.layout.simple_list_item_1, settingsList) );
但问题是我的第一个列表工作正常,但是当按下第二个按钮时,它会强行停止。
编辑 logcat:
05-13 19:44:46.988: E/AndroidRuntime(6806): FATAL EXCEPTION: main
05-13 19:44:46.988: E/AndroidRuntime(6806): java.lang.ClassCastException: com.bitgriff.androidcalls.MainActivity$1 cannot be cast to android.content.Context
05-13 19:44:46.988: E/AndroidRuntime(6806):atcom.bitgriff.androidcalls.MainActivity$1.onClick(MainAc??tivity.java:506)
05-13 19:44:46.988: E/AndroidRuntime(6806):atandroid.view.View.performClick(View.java:3627)
05-13 19:44:46.988: E/AndroidRuntime(6806):atandroid.view.View$PerformClick.run(View.java:14329) –
答案 0 :(得分:3)
您正在将对象buttonclicked(这是一个OnClickListener)转换为上下文。
settingsListView.setAdapter( new ArrayAdapter<String>( (Context) buttonclicked , android.R.layout.simple_list_item_1, settingsList) );
改为使用YourActivity.this
。
答案 1 :(得分:1)
你需要改变这个:
settingsListView.setAdapter( new ArrayAdapter<String>( (Context) buttonclicked, android.R.layout.simple_list_item_1, settingsList) )
到此:
settingsListView.setAdapter( new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, settingsList) )