2

アプリケーションがクラッシュし、次のエラーが発生します:

02-19 13:48:34.168: E/AndroidRuntime(1070): FATAL EXCEPTION: main
02-19 13:48:34.168: E/AndroidRuntime(1070): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.prva/com.example.prva.MainMenu}: java.lang.NullPointerException

02-19 13:48:34.168: E/AndroidRuntime(1070): Caused by: java.lang.NullPointerException
02-19 13:48:34.168: E/AndroidRuntime(1070):     at com.example.prva.MainMenu.onCreate(MainMenu.java:49)

このアクティビティを実行しようとすると:

public class MainMenu extends Activity{ 
    Calendar c = Calendar.getInstance();    
    int currentsecond = c.get(Calendar.SECOND); 
    Handler h=new Handler();
    DatabaseManager db;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);             
        h.post(new Runnable(){
            @Override
            public void run() {             
                String currentDateTimeString = new SimpleDateFormat("dd.MM.yyyy HH:mm").format(new Date());
                TextView text = (TextView) findViewById(R.id.txtDate);
                text.setText(currentDateTimeString);
                h.postDelayed(this, 60000);
            }
        });

        db = new DatabaseManager(this);             


        Button btnalarm = (Button) findViewById(R.id.btnSetAlarm);
        btnalarm.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub      
                startActivity(new Intent(MainMenu.this, SetAlarm.class));               
            }           
        });

        Button btnmelody = (Button)findViewById(R.id.btnSetMelody);
        btnmelody.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                startActivity(new Intent(MainMenu.this, SetMelody.class));
            }
        });     

        Button btnlist = (Button) findViewById(R.id.btnAlarmList);
        btnlist.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent intent1 = new Intent(MainMenu.this, AlarmList.class);
                startActivity(intent1);
            }
        });

        Button btndata = (Button) findViewById(R.id.btnDatabase);
        btndata.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent intent2 = new Intent(MainMenu.this, ManageDatabase.class);
                startActivity(intent2);
            }
        }); 
    }
}

49行目は次のとおりです。

btnalarm.setOnClickListener(new View.OnClickListener() {
4

3 に答える 3

3

あなたがこれを書いたとき:

    Button btnalarm = (Button) findViewById(R.id.btnSetAlarm);
    btnalarm.setOnClickListener(new View.OnClickListener() {

そのビューを見つけるとnull以外のボタンが返されると想定していましたが、間違っていました。

検索が失敗した理由を確認すると、答えが得られます。

于 2013-02-19T13:56:46.593 に答える
1

findViewByIdあなたがあなたのためにしようとするときあなたの問題があるはずですButton、このID(R.id.btnSetAlarm)があなたのレイアウトで同じであるかどうか、またはこのボタンがにあるかどうか見てくださいsetContentView(R.layout.activity_main);

于 2013-02-19T14:03:48.800 に答える
1

これを試して:

    btnalarm.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
        // TODO do your stuff here
        }
    });

「 btnSetAlarm」が *main_activity.xml* で宣言されていることを確認してください。

于 2013-02-19T14:05:54.253 に答える