XMLファイルでボタンを作成しましたが、findViewByIdを介してボタンにアクセスしようとすると、NullPointerExceptionが発生します。
ボタンのIDはR.javaファイルで生成されます。しかし、それでも私はfindViewByIdメソッドを通り抜けることができませんでした。
Main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.example.calendar_module.CalendarView android:id="@+id/calendar"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/NextMonth"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Next"/>
</LinearLayout>
MainActivity.java:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1) start calendar view
// startActivityForResult(new Intent(Intent.ACTION_PICK).setDataAndType(null, CalendarActivity.MIME_TYPE), 100);
startActivity(new Intent(Intent.ACTION_VIEW).setDataAndType(null, CalendarActivity.MIME_TYPE));
final CalendarView calenderView = new CalendarView(this);
// Calendar calendarView = Calendar.getInstance();
//
// Uri uriCalendar = Uri.parse("content://com.android.calendar/time/" + String.valueOf(System.currentTimeMillis()));
// Intent intentCalendar = new Intent(Intent.ACTION_VIEW,uriCalendar);
//
// //Use the native calendar app to view the date
// startActivity(intentCalendar);
Button NextMonth = (Button) findViewById(R.id.NextMonth);
System.out.println("NextMonth Id "+NextMonth);
NextMonth.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
calenderView.nextMonth();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
// 2) implement your own onActivityResult method to handle returned date
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode==RESULT_OK) {
int year = data.getIntExtra("year", 0); // get number of year
int month = data.getIntExtra("month", 0); // get number of month 0..11
int day = data.getIntExtra("day", 0); // get number of day 0..31
// format date and display on screen
final Calendar dat = Calendar.getInstance();
dat.set(Calendar.YEAR, year);
dat.set(Calendar.MONTH, month);
dat.set(Calendar.DAY_OF_MONTH, day);
// show result
SimpleDateFormat format = new SimpleDateFormat("yyyy MMM dd");
Toast.makeText(MainActivity.this, format.format(dat.getTime()), Toast.LENGTH_LONG).show();
}
}
}