2017-06-14 272 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"); 
    } 
}