2011-10-11 8 views
0

をアンドロイド用にプログラミングすると、setOnItemClickListenerを使用すると例外がスローされます。以前はこれまでに何のトラブルも経験していませんでしたが、ドキュメントには例外がリストされていませんでした。誰が問題が何であるか教えていただけますか?setOnItemClickListenerが例外

1は非常に簡単であるべき
package com.name.magicwindow; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MagicWindowActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     ListView mainMenu; 
     try{ 
      mainMenu = (ListView)findViewById(R.id.main_menu_list); 

      try{ 
       mainMenu.setOnItemClickListener(new OnItemClickListener() 
       { 
        public void onItemClick(AdapterView<?> parent,View view,int position,long id) 
        { 
         // When clicked, show a toast with the TextView text 
         Toast.makeText(getApplicationContext(), ((TextView) view).getText(),Toast.LENGTH_SHORT).show(); 
        } 
       }); 
      }catch(Exception e) 
      { 
       Toast.makeText(getApplicationContext(), "could not set listener",Toast.LENGTH_LONG).show(); 
      } 
     }catch(Exception e) 
     { 
      Toast.makeText(getApplicationContext(), "could not find listview",Toast.LENGTH_LONG).show(); 
     } 


     setContentView(R.layout.main); 
    } 
} 
+0

logcatからスタックトレースを投稿できますか? –

+0

トーストだけでなく、実際のログ出力を挿入して、何がうまくいかないかを確認します。例えば:Log.e( "MyActivity/outerTry。"、e.getMessage()、e); –

答えて

2

あなたはfindViewById()を使用する前setContentView(R.layout.main)を呼び出す必要があります。
あなたのアクティビティはコンテンツ(ビュー階層)が何であるかを知っています。

+0

ありがとう! UIをバックエンドにフックする前に表示するのが直観に反しているようですが、それはそのトリックでした! :D – user980058

+0

それはそれを表示することではありません。使用するビュー階層を宣言します。 'findViewById'は指定されたIDを検索する場所をどのように知るべきですか? – Knickedi