我有一個名爲「Datetime」的類,我想使用intent將Datetime的活動調用到我的MainActivity中。使用意圖調用活動到另一個活動失敗
這是我做過什麼
public void onClick(View view) {
Intent i = new Intent(this, Datetime.class);
startActivity(i);
}
,我也更新了我的清單:
<activity
android:name=".Datetime" >
</activity>
,但它不工作。我的代碼有什麼問題?
爲了以防萬一,你想參考。以下是我的DateTime類:
public class Datetime extends Activity {
static final int DATE_DIALOG_ID = 1;
static final int TIME_DIALOG_ID = 2;
private Button pickDate;
private int year, month, day;
private Button pickTime;
private int hours, min;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.create_layout);
pickDate = (Button)findViewById(R.id.date_button);
pickDate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDialog(DATE_DIALOG_ID);
}
});
final Calendar cal = Calendar.getInstance();
year = cal.get(Calendar.YEAR);
month = cal.get(Calendar.MONTH);
day = cal.get(Calendar.DAY_OF_MONTH);
updateDate();
pickTime = (Button)findViewById(R.id.time_button);
pickTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDialog(TIME_DIALOG_ID);
}
});
hours = cal.get(Calendar.HOUR);
min = cal.get(Calendar.MINUTE);
updateTime();
}
private void updateTime() {
pickTime.setText(new StringBuilder().append(hours).append(':')
.append(min));
}
private void updateDate() {
pickDate.setText(new StringBuilder().append(day).append('-')
.append(month + 1).append('-').append(year));
}
private DatePickerDialog.OnDateSetListener dateListener =
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int yr, int monthOfYear,
int dayOfMonth) {
year = yr;
month = monthOfYear;
day = dayOfMonth;
updateDate();
}
};
private TimePickerDialog.OnTimeSetListener timeListener =
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
hours = hourOfDay;
min = minute;
updateTime();
}
};
protected Dialog onCreateDialog(int id){
switch(id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this, dateListener, year, month, day);
case TIME_DIALOG_ID:
return new TimePickerDialog(this, timeListener, hours, min, false);
}
return null;
}
}
的logcat:
07-03 16:36:37.394: E/Dynamiclayout(1282): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
07-03 16:36:37.394: E/Dynamiclayout(1282): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
07-03 16:36:37.424: E/SpannableStringBuilder(1282): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
07-03 16:36:37.424: E/SpannableStringBuilder(1282): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
07-03 16:36:37.424: E/SpannableStringBuilder(1282): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
07-03 16:36:37.424: E/SpannableStringBuilder(1282): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
07-03 16:36:42.189: D/GestureDetector(1282): [Surface Touch Event] mSweepDown False, mLRSDCnt : -1 mTouchCnt : 3 mFalseSizeCnt:0
按照要求,我MainActivity類別:
public class MainActivity extends TabActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
// Create an Intent to launch an Activity for the tab (to be reused)
// Initialize a TabSpec for each tab and add it to the TabHost
intent = new Intent().setClass(this, ViewTab.class);
spec = tabHost.newTabSpec("View").setIndicator("View",
res.getDrawable(R.drawable.ic_tab_view))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, CreateTab.class);
// Do the same for the other tabs
spec = tabHost.newTabSpec("Create").setIndicator("Create",
res.getDrawable(R.drawable.ic_tab_create))
.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(2);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.menu_about:
startActivity(new Intent(this,About.class));
return true;
}
return false;
}
public void onClick(View view) {
Intent i = new Intent(this, Datetime.class);
startActivity(i);
}
}
你宣佈日期時間在Manfiest? – Blackbelt
給我們stacktrace –
是的,我宣佈了。請看看我的logcat。謝謝。 –