2016-06-26 6 views
-1

Androidスタジオでアプリを実行しようとすると問題が発生しました。あるアクティビティにエラーが発生しました。致命的な例外:メイン

dancam.com.chords.ChordsListActivity.onCreate(ChordsListActivity.java:13)

setContentView(R.layout.activity_chords_list); 

ここChordsListActivityクラスです:

私はより正確に問題があるように思わ

FATAL EXCEPTION: main

を取得します

import android.app.ListActivity; 
import android.os.Bundle; 

public class ChordsListActivity extends ListActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_chords_list); 

    String[] accordi = new String[] {"Do maggiore", "Re maggiore", "Si maggiore"}; 
    String[] note = new String[] {"note: Do, Mi, Sol", "note: La, Re, Fa#", "note: Fa#, Si, Re#"}; 
    int[] immagini = new int[] {R.drawable.do_maggiore, R.drawable.re_maggiore, R.drawable.si_maggiore}; 

    CustomListAdapter adapter = new CustomListAdapter(getApplicationContext(), accordi, note, immagini); 
    setListAdapter(adapter); 
    } 
} 

私はちょっとListActivityの代わりにActivityを延長して解決することができましたが、setListAdapter()メソッドを使用することはできません。

誰かがコードを修正するのを助けることができたら本当にありがとう!

カスタムアダプターやその他のファイルを投稿する必要がある場合はお知らせください。

編集:あなたはListActivityから拡張する場合は全体のスタックトレース

FATAL EXCEPTION: main 
Process: dancam.com.chords, PID: 3080 
java.lang.RuntimeException: Unable to start activity ComponentInfo{dancam.com.chords/dancam.com.chords.ChordsListActivity}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
at android.app.ActivityThread.-wrap11(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 
at android.app.ListActivity.onContentChanged(ListActivity.java:243) 
at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:398) 
at android.app.Activity.setContentView(Activity.java:2166) 
at dancam.com.chords.ChordsListActivity.onCreate(ChordsListActivity.java:13) 
at android.app.Activity.performCreate(Activity.java:6237) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
at android.app.ActivityThread.-wrap11(ActivityThread.java)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:148)  
at android.app.ActivityThread.main(ActivityThread.java:5417)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
+1

致命的な例外が発生している理由を特定できるように、スタックトレース全体を提供する必要があります。 – Arpan

+0

@Arpan私はそれが正しいかどうかわからないコードとして追加しました。とにかく私を助けてくれてありがとう – Daniele

+0

@MikeM私はカスタム 'listView'を持っているので、' Activity'を拡張する必要があります。しかし、なぜ 'setListAdapter'は動作しませんか? – Daniele

答えて

0

これはListViewの問題です。 R.layout.activity_chords_listに移動して、<ListView>を追加し、IDに設定android:id="@android:id/list"例外のよう

は言う:android.R.id.list 『「あなたのコンテンツは、そのID属性であるListViewコントロールを持っている必要があります』

それが必要な作品であれば、残りのコードはOKです。

+0

あなたの答えをありがとう、私はカスタムの行レイアウトがあっても動作しますか? – Daniele

+0

はい、独自のLayoutManagerを作成する必要があります。デフォルトではLinear(リストビュー)、グリッドはほとんどありません。 –

+0

いいえ、img、textview-sなどのようなものがある場合は、カスタムのListAdapterを使用してください。 1つのTextViewのようなものなら、それを避けることができます。 – MilanNz

0

を追加し、それがすでにリストビューを持っていますが、活動はしていません。リストビューの代わりにRecyclerViewを使用すると、inbActivityのレイアウトリストを作成する必要があります。アクティビティでRecyclerViewリファレンスを作成し、onCreateで初期化します。アクティビティでデータ用のアダプタを作成します(onCreateメソッド)。 Finnalyでは、アダプタをリストビュー参照に設定します。リスト内のデータを変更するには、アダプタに新しいデータを設定し、その上で.notifyDatasetChange()を呼び出します。 RecyclerViewの場合は、LayoutManagerも必要です(ドキュメントを参照)

+0

あなたの答えをありがとう、RecyclerViewとは何ですか? – Daniele

+0

ListViewの新しいバージョンでは、スクロール速度が速く、どのような方法でも項目を並べ替えることができます(たとえば2つの列)。チュートリアルの1つ、https://www.binpress.com/tutorial/android-l-recyclerview-and- –

+0

ありがとうございました – Daniele

関連する問題