0

24時間形式のtimePickerがあり、結果を取得して変数に入れ、さらに変数を使用して、textViewに表示したいと思います。Eclipseで構文エラーが発生しませんが、アプリを実行すると、「DisplayMessageActivity.java」を起動するとクラッシュします。

コードは次のとおりです。

package com.example.sleepytime;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;

@SuppressLint("NewApi")
public class DisplayMessageActivity extends Activity {

 TimePicker timepicker;
 public int hour1 = timepicker.getCurrentHour();
 public int min1 = timepicker.getCurrentMinute();


@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_message);
    // Show the Up button in the action bar. 
    getActionBar().setDisplayHomeAsUpEnabled(true);

    timepicker = (TimePicker) findViewById(R.id.timePicker1);
    timepicker.setIs24HourView(true);

    Button mButton = (Button) findViewById(R.id.button1);
    mButton.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View printIt) {
        final TextView mTextView = (TextView) findViewById(R.id.print);
        mTextView.setText(hour1 + min1);
}   

}); 

}

}

4

2 に答える 2

1

ここ

public int hour1 = timepicker.getCurrentHour();
public int min1 = timepicker.getCurrentMinute();

timepickerですnullonCreate()ここのように入れる必要があります

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_message);
    // Show the Up button in the action bar. 
    getActionBar().setDisplayHomeAsUpEnabled(true);

timepicker = (TimePicker) findViewById(R.id.timePicker1);
timepicker.setIs24HourView(true);
hour1 = timepicker.getCurrentHour();
min1 = timepicker.getCurrentMinute();

と変更

public int hour1 = timepicker.getCurrentHour();
public int min1 = timepicker.getCurrentMinute();

public int hour1;
public int min1;

それが私が最初に目にする問題です。もっとあるかもしれませんが、それはあなたがそれ以上進むのを妨げるでしょう。

 mButton.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View printIt) {
    final TextView mTextView = (TextView) findViewById(R.id.print);
    String hourString = String.valueOf(hour);
    String minString = String.valueOf(minute);
    mTextView.setText(hourString + minString);
于 2013-03-24T20:29:45.487 に答える
0
TimePicker timepicker;
 public int hour1 = timepicker.getCurrentHour();
 public int min1 = timepicker.getCurrentMinute();

あなたはこれを行うことはできません、それはあなたにnullポインタ例外を与えます、これをこのようにしてください

timepicker = (TimePicker) findViewById(R.id.timePicker1);
timepicker.setIs24HourView(true);
hour1 = timepicker.getCurrentHour();
min1 = timepicker.getCurrentMinute();

さらに、3.0未満のAPIで実行すると、現在のコードが壊れます。getActionBar()。setDisplayHomeAsUpEnabled(true);にチェックを入れてください。

または、ハニカムより前のバージョンをサポートしたくない場合は、最小SDKを3.0に変更します

于 2013-03-24T20:34:02.480 に答える