2011-01-02 2 views
0

私は漫画を表示し、後でアクセスできる「お気に入り」とマークすることができるシンプルなアプリケーションを持っています(それ以上はありますが、 )。ユーザが漫画をお気に入りとしてマークすると、文字列は、キー= "#of Comic" Value = "title of Comic"のフォーマットで共有プリファレンスに置かれる。 SharedPreferencesには、お気に入りの漫画に関連付けられたキー/値のペアだけが含まれます。この機能は正常に動作します。この問題は、SharedPreferencesファイルに保存されているすべてのお気に入りの値を含むListViewを表示することを目的としたメニューボタンで発生します。ユーザーがポップアップメニューAndroid:リストビューに共有設定からの項目を入力する際の問題

case R.id.favorites: 
     Log.i("Step 1", "Favorites"); 
     favVector.clear(); //Clears string Vector that I want to use to hold the titles 

     Map<String, ?> allprefs = xkfav.getAll(); //gets map of all Shared Preferences 
     for (Map.Entry<String, ?> entry : allprefs.entrySet()) { 
      favVector.add((String) entry.getValue()); 
     } 
     Log.i("Step 2", "Favorites"); 
     setContentView(R.layout.favlist); //loads Layout with ListView (and nothing else) 
     Log.i("Step 3", "Favorites"); 
     ListView menuList; 
     menuList = (ListView) findViewById(R.id.FavListView); 
     String[] items = new String[favVector.size()]; //creates array with size of Vector 
     favVector.copyInto(items); //Copies Vector into array 
     ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.fav_item, items); 
     menuList.setAdapter(adapt); //Puts array contents into list 

私はこれを実行するたびにお気に入りボタンをクリックしたときにここで実行されるアクションのためのコードですが、私は強制的に閉じるを取得します。私は "ステップ2"がログに現れることさえ見たことがありません。これはおそらく美しく効率的なコードではないという事実を無視して、ユーザーがこのボタンをクリックすると強制終了エラーが出るのはなぜですか?

答えて

2

強制終了は、通常、アプリのどこかで実行時例外が発生した結果です。

この例外はログに表示する必要があります。 Eclipse/ADTを使用している場合は、DDMSパースペクティブに移動し、logcatビューを確認します。 (私はあなたが簡単にエラーを再現できると仮定します)。

スタックトレースが表示されます。スタックトレースを調べて、どこが間違っているのか調べてみてください。これは、NullPointerExceptionから別のRuntimeExceptionにいたる可能性があります。

また、「ステップ1」ブレークポイントにブレークポイントを設定してみてください。デバッグモードでアプリを起動し、コードをステップ実行します。スタックのある時点で、強制終了してアプリケーションが終了する時期と理由が正確に表示されます。

あなたは、Eclipseのデバッグ機能を使ったことがない場合は、次のリンクを参照してください。どのように私は、「コードのステップ?」ん http://www.vogella.de/articles/EclipseDebugging/article.html

+0

を私はこれまでにそれをしていません。 –

+0

更新された回答を表示 – ddewaele

関連する問題