1

2 つのボタンがあるアプリを設計したいと考えています。各ボタンを 1 つずつ押すと、コンテンツのリストが表示されます。

このために、次のコードを使用しています。

this.findViewById( R.id.UpdateList ).setOnClickListener( this );
this.findViewById( R.id.SettingsList ).setOnClickListener(buttonclicked); 

これでボタンを作成しています。クリックで、私は使用しています:

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) );

しかし問題は、最初のリストが正常に機能していることですが、2番目のボタンを押すと強制的に停止しました。

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) –
4

2 に答える 2

3

Yout オブジェクト buttonclicked (OnClickListener) を Context にキャストしています。

settingsListView.setAdapter( new ArrayAdapter<String>( (Context) buttonclicked  , android.R.layout.simple_list_item_1, settingsList) );

YourActivity.this代わりに使用してください。

于 2013-05-13T14:20:26.307 に答える