2017-06-14 150 views
0

時遇到問題我正在使用Android Studio,在我的應用程序中有2頁。一個是搜索頁面,用戶必須鍵入信息才能搜索。其中一個EditTexts需要日期和時間,而不是輸入它,單擊EditText會將用戶重定向到第二個頁面,他將從CalendarView和Time Picker中選擇一個日期和時間。當他點擊「完成」按鈕時,日期和時間將被填充到前面提到的EditText中。在重定向到頁面

這個問題?應用程序崩潰發生時,請幫助我的代碼。

下面的代碼的第一頁:

public class SearchActivity extends AppCompatActivity { 
EditText etPickUp, etDropOff, etRentS, etRentE; 
Button btnBack, btnSearch; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_search); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    etPickUp = (EditText) findViewById(R.id.etPickUp); 
    etDropOff = (EditText) findViewById(R.id.etDropOff); 

    etRentS = (EditText) findViewById(R.id.etRentS); 
    etRentS.setFocusable(false); 
    etRentS.setClickable(true); 
    etRentS.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v){ 
      Intent rentS = new Intent(SearchActivity.this, RentStartActivity.class); 
      startActivity(rentS); 
     } 
    }); 

    btnBack = (Button) findViewById(R.id.btnBack); 
    btnBack.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      Intent back = new Intent(SearchActivity.this, LandingActivity.class); 
      startActivity(back); 
     } 
    }); 

    String date1=""; 
    String time1=""; 
    Bundle bundle1 = getIntent().getExtras(); 
    if(bundle1 != null) 
    { 
     date1 = bundle1.getString("Date1"); 
     time1 = bundle1.getString("Time1"); 
    } 
    etRentS.setText(date1); 
    etRentS.setText(time1); 


    btnSearch = (Button) findViewById(R.id.btnSearch); 
    btnSearch.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 

     } 
    }); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 
} 

而這裏的代碼,第二頁:

public class RentStartActivity extends AppCompatActivity { 

Button btnDone1, btnCancel1; 
CalendarView calendar1; 
TimePicker time1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_rent_start); 

    calendar1 = (CalendarView) findViewById(R.id.calendar1); 
    time1 = (TimePicker) findViewById(R.id.time1); 

    btnDone1 = (Button) findViewById(R.id.btnDone1); 
    btnDone1.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      Intent done1 = new Intent(); 
      done1.putExtra("Date1", calendar1.getDate()); 
      done1.putExtra("Time1", time1.getDrawingTime()); 
      startActivity(done1); 
     } 
    }); 

    btnCancel1 = (Button) findViewById(R.id.btnCancel1); 
    btnCancel1.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      Intent cancel1 = new Intent(RentStartActivity.this, SearchActivity.class); 
      startActivity(cancel1); 
     } 
    }); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 
} 

謝謝!!

+0

當應用程序崩潰時,應該在設備控制檯日誌中打印堆棧跟蹤 - 您能找到並粘貼到此處嗎? –

回答

0

您忘記了在定義意圖對象時應該開始哪個活動。

  Intent done1 = new Intent(); 
      done1.putExtra("Date1", calendar1.getDate()); 
      done1.putExtra("Time1", time1.getDrawingTime()); 
      startActivity(done1); 

您應該添加這樣的事情

Intent done1=new Intent(SearchActivity.this, RentStartActivity.class); 
0

你想用一個活動的結果。您需要使用此代碼首先打開第二個活動:

startActivityForResult(RentStartActivity, RentStartActivityResultCode) 

哪裏RentStartActivityResultCode是用來識別結果的整型。

在第二個活動,使用完成按鈕的操作處理程序的代碼發送回結果:

Intent output = new Intent(); 
output.putExtra("Date1", calendar1.getDate().getTime()); 
output.putExtra("Hour", time1.getHour()); 
output.putExtra("Minute", time1.getMinute()); 
setResult(RESULT_OK, output); 
finish(); 

最後,在第一個活動中使用此代碼讀取結果:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(requestCode == RentStartActivityResultCode && resultCode == RESULT_OK && data != null) { 
     Date date1 = new Date(data.getLongExtra("Date1")); 
     int hour = data.getIntExtra("Hour"); 
     int minute = data.getIntExtra("Minute"); 
    } 
}