1

私はAndroidを開発してから2週間しか経っていませんが、この問題について多くの調査を行ってきましたが、何も機能しないようです。

DatePicker制限などを設定するメソッドが1つあるヘルパークラスがあります。

public class AlarmHelper extends Activity {

    public void setupDatePicker(){
        long maxTime = 52560000;
        final Calendar cal = Calendar.getInstance();
        DatePicker dp = (DatePicker)findViewById(R.id.datePicker);
        dp.setMinDate(cal.getTimeInMillis() - 1000);
        dp.setMaxDate(cal.getTimeInMillis() + maxTime);
    }

}

次に、そのようにメソッドでsetupDatePicker()からを呼び出そうとします。MainActivityonCreate()

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

    AlarmHelper helper = new AlarmHelper();
    helper.setupDatePicker();

    setContentView(R.layout.activity_main);
}

アプリを実行すると、が表示されNullPointerExceptionます。コンテキストを実行するための何かがあると思いますが、ヘルパークラス内でそれを実装する方法の手がかりがありません。

どんな助けでも大歓迎です。

4

2 に答える 2

2

現在、findViewByIdアクティビティレイアウトを設定する前に、アクティビティonCreateコードを次のように変更しようとしています。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

       // your code here...
    setContentView(R.layout.activity_main);   //<< set layout for Activity here

    AlarmHelper helper = new AlarmHelper(MainActivity.this);
    helper.setupDatePicker();


}

また、AlarmHelperでは、ActivityクラスがActivityでない場合、Activityクラスを拡張する必要はありません。AlarmHelper他の非ActivityクラスからUI要素にアクセスするには、アクティビティコンテキストを渡す必要があるため、クラスを変更します。

public class AlarmHelper  {

Activity activity;

public AlarmHelper(Activity activity){
  this.activity=activity;
}

    public void setupDatePicker(){
        long maxTime = 52560000;
        final Calendar cal = Calendar.getInstance();
        DatePicker dp = (DatePicker)activity.findViewById(R.id.datePicker);
        dp.setMinDate(cal.getTimeInMillis() - 1000);
        dp.setMaxDate(cal.getTimeInMillis() + maxTime);
    }

}
于 2013-01-16T17:36:58.293 に答える
0

解決策:setupDatePicker()の前にsetContentView()を移動します

 super.onCreate(savedInstanceState);
 requestWindowFeature(Window.FEATURE_NO_TITLE);
 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,    WindowManager.LayoutParams.FLAG_FULLSCREEN);
 setContentView(R.layout.activity_main);

 AlarmHelper helper = new AlarmHelper();
 helper.setupDatePicker();

とにかく、アクティビティ内にアクティビティを作成するのはひどいです!

于 2013-01-16T17:39:00.327 に答える