저는 Android Studio에 처음으로 익숙하며 (Java에 비교적 익숙하지 않습니다) 사용자가 시간을 입력하고 타이머를 가질 수있는 앱을 만들려고합니다. 그 시간이되면 카운트 다운을 시작하십시오. 그것을 조사한 후에 의도를 사용하는 것이 가장 좋은 방법 인 것 같지만 사용 방법을 이해하는 데 몇 가지 문제가 있습니다. 인 텐트를 사용하여 알람 생성하기 및 일부 문제가 발생했습니다
public class Countdown extends AppCompatActivity {
EditText mHours;
EditText mMinutes;
TextView mDisplay;
public static long finalTime = 0;
private AlarmManager alarmMgr;
private PendingIntent alarmIntent;
Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_countdown);
mHours = (EditText) findViewById(R.id.text1);
mMinutes = (EditText) findViewById(R.id.text2);
mDisplay = (TextView) findViewById(R.id.display);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 11);
calendar.set(Calendar.MINUTE, 22);
Intent intent = new Intent(context, Countdown.class);
alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmMgr.set(AlarmManager.RTC, calendar.getTimeInMillis(), alarmIntent);
final long hourInput = Long.parseLong(mHours.getText().toString());
final long minuteInput = Long.parseLong(mMinutes.getText().toString());
finalTime = (hourInput * 3600000) + (minuteInput * 60000);
}
});}}
그리고 내 수신기 파일
내가 가진 :public class CountdownStarter {
TextView mDisplay;
public void onRecieve() {
final CountDownTimer aCounter = new CountDownTimer(Countdown.finalTime, 1000) {
public void onTick(long millisUntilFinished) {
mDisplay.setText("Seconds remaining: " + millisUntilFinished/1000);
}
public void onFinish() {
mDisplay.setText("Finished");
}
};
aCounter.start();
}
}
지금, 나는이 메시지가 디버거를 실행 지금, 나는 (라고 카운트 다운) 내 주요 활동 파일에 다음 코드를 :
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.android.timerexample, PID: 32276
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at android.content.ComponentName.<init>(ComponentName.java:128)
at android.content.Intent.<init>(Intent.java:5283)
at com.example.android.timerexample.Countdown$1.onClick(Countdown.java:42)
at android.view.View.performClick(View.java:5702)
at android.widget.TextView.performClick(TextView.java:10888)
at android.view.View$PerformClick.run(View.java:22533)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7229)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
내가 조사하려고했지만, 난 그냥 내가 NullPointerException이 점점 나 해결 방법을하는 방법입니다 이유를 이해하지 않습니다 - 나는 확실히 잘못 여기에 몇 가지 물건을하고있는 중이 야하지만 난 알아낼 수있는다음 단계입니다. 어떤 도움이라도 도움이 될 것입니다! Activity
이 코드
를 대체 할 수있는'context'은 null입니다. –