1
這裏我有3個活動: 我的第一個活動(活動A)有一個編輯文本,按鈕和列表視圖。 此活動將在編輯文本中鍵入的內容添加到列表視圖中。在我的第三個活動中調用onBackPressed()之後,我用什麼方法重新加載列表視圖
我的第二個活動(活動B)在用戶點擊列表視圖後打開。 此活動充當我的應用程序的記錄器。
我的第三項活動(活動C)是一個TabHost。當我向後移動時,我返回到活動A但是我的活動A的列表視圖是空的。
爲什麼? 我該如何解決這個問題?
活性A - >活動B - >活動C.
這是我的代碼活動A:
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import com.sdsmdg.tastytoast.TastyToast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private static int CODE = 1; //declare as FIELD
DatabaseHelper db;
ListView lv;
EditText nameTxt;
ImageView savebtn;
ArrayList<String> arr = new ArrayList<String>();
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, arr);
//reference to the database to make sure the vacation titles are stored
db = new DatabaseHelper(this);
//edit text to enter a vacation
//--XML is vacationTitleTB--//
nameTxt = (EditText) findViewById(R.id.vacationTitleTB);
//save button to save into the listview later on
//--XML is createVacationTitleButton--//
savebtn = (ImageView) findViewById(R.id.planeimage);
//list view to store all of the vacation titles in, as long as the emulator stays running
//--XML is vacationTitlesListView--//
lv = (ListView) findViewById(R.id.vacationTitlesListView);
lv.setBackgroundColor(Color.LTGRAY);
savebtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//inserting the vacation title into the database
System.out.println(nameTxt.getText().toString());
//Toast.makeText(MainActivity.this, "Data inserted", Toast.LENGTH_LONG).show();
//getting the vacation title name
String getText = nameTxt.getText().toString();
//checking to make sure that something was typed into the edit text,but is not the same edit text as already entered
if (arr.contains(getText))
{
TastyToast.makeText(getBaseContext(), "Same vacation?? Click on the one you already made. Just add onto it.", TastyToast.LENGTH_LONG,TastyToast.DEFAULT);
}
//checking to make sure that the edit text is not left blank
else if (getText == null || getText.trim().equals(""))
{
TastyToast.makeText(getBaseContext(), "Excuse me, you need a Vacation Title for your vacation.", TastyToast.LENGTH_LONG,TastyToast.DEFAULT);
}
//otherwise add this to the array list
else
{
db.insertData2(new VacationTitleLog(nameTxt.getText().toString()));
arr.add(getText);
lv.setAdapter(adapter);
adapter.notifyDataSetChanged();
//go to the next page
}
}
});
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent1 = new Intent(MainActivity.this, Main.class);
//pass the vacation title to the next page
intent1.putExtra("vacationtitlenamed", nameTxt.getText().toString());
//launch the intent to Main
startActivity(intent1);
}
});
}
}
這是我的代碼活性B:
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.common.api.Status;
import com.google.android.gms.location.places.Place;
import com.google.android.gms.location.places.ui.PlaceAutocompleteFragment;
import com.google.android.gms.location.places.ui.PlaceSelectionListener;
import com.sdsmdg.tastytoast.TastyToast;
import java.util.Calendar;
import java.util.List;
public class Main extends AppCompatActivity implements View.OnClickListener {
DatabaseHelper myDB;
Button btnDatePicker, btnDatePicker2, btnViewAll, btnDelete, forward, backward;
TextView title, from, to;
EditText txtDate, txtDate2;//, id;
private int mYear, mMonth, mDay;
private int mYear2, mMonth2, mDay2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myDB = new DatabaseHelper(this);
btnDatePicker = (Button) findViewById(R.id.in_button);
btnDatePicker2 = (Button) findViewById(R.id.out_button);
btnDatePicker.setOnClickListener(this);
btnDatePicker2.setOnClickListener(this);
title = (TextView) findViewById(R.id.tit);
forward = (Button) findViewById(R.id.forwardBtn);
backward = (Button) findViewById(R.id.backBtn);
Intent intent1 = getIntent();
Bundle bd = intent1.getExtras();
if (bd != null) {
String vt = bd.getString("vacationtitlenamed");
title.setText("Vacation Title " + "\n" + vt);
}
from = (TextView) findViewById(R.id.editText);
to = (TextView) findViewById(R.id.editText2);
txtDate = (EditText) findViewById(R.id.txtDate);
txtDate2 = (EditText) findViewById(R.id.txtDate2);
btnViewAll = (Button) findViewById(R.id.viewAllButton);
btnDelete = (Button) findViewById(R.id.deleteButton);
PlaceAutocompleteFragment places = (PlaceAutocompleteFragment) getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);
places.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
from.setText(place.getName().toString());
System.out.println(place.getName());
//from.setVisibility(View.INVISIBLE);
SingletonFromTo.getInstance().setFrom(from.getText().toString());
}
@Override
public void onError(Status status) {
Toast.makeText(getApplicationContext(), status.toString(), Toast.LENGTH_SHORT).show();
}
});
PlaceAutocompleteFragment places2 = (PlaceAutocompleteFragment)
getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment2);
places2.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place2) {
to.setText(place2.getName().toString());
System.out.println(place2.getName());
//to.setVisibility(View.INVISIBLE);
SingletonFromTo.getInstance().setTo(to.getText().toString());
}
@Override
public void onError(Status status2) {
Toast.makeText(getApplicationContext(), status2.toString(), Toast.LENGTH_SHORT).show();
}
});
previous();
addData();
viewAll();
deleteAll();
}
private void previous() {
backward.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Main.super.onBackPressed();
}
});
}
public void deleteAll()
{
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myDB.deleteAllData();
}
});
}
public void addData()
{
forward.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (from.getText().length() == 0)
{
TastyToast.makeText(getBaseContext(), "You need to enter in a from location", TastyToast.LENGTH_LONG,TastyToast.DEFAULT);
}
else if (to.getText().length() == 0)
{
TastyToast.makeText(getBaseContext(), "You need to enter in a to location",TastyToast.LENGTH_LONG,TastyToast.DEFAULT);
}
else if (txtDate.getText().length() == 0)
{
TastyToast.makeText(getBaseContext(), "You need to enter in a start date",TastyToast.LENGTH_LONG,TastyToast.DEFAULT);
}
else if (txtDate2.getText().length() == 0)
{
TastyToast.makeText(getBaseContext(), "You need to enter in a end date", TastyToast.LENGTH_LONG,TastyToast.DEFAULT);
}
else
{
System.out.println(txtDate.getText().toString());
System.out.println(txtDate2.getText().toString());
myDB.insertData(new VacationInfoLog(from.getText().toString(), to.getText().toString(), txtDate.getText().toString(), txtDate2.getText().toString()));
// myDB.queryToVacationTitle();
//store the data here
Intent intent2 = new Intent(Main.this, TabbedActivity.class);
intent2.putExtra("title", title.getText().toString());
SingletonFromTo.getInstance().setFrom(from.getText().toString());
SingletonFromTo.getInstance().setTo(to.getText().toString());
//intent2.putExtra("f", from.getText().toString());
//intent2.putExtra("t", to.getText().toString());
SingletonFromTo.getInstance().setStart(txtDate.getText().toString());
SingletonFromTo.getInstance().setEnd(txtDate2.getText().toString());
startActivity(intent2);
}
}
});
}
public void viewAll() {
btnViewAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<VacationInfoLog> res = myDB.getAllData();
StringBuffer buffer = new StringBuffer();
for (VacationInfoLog info : res) {
buffer.append("ID : " + info.getID() + "\n");
buffer.append("From : " + info.getFrom() + "\n");
buffer.append("To : " + info.getTo() + "\n");
buffer.append("Start : " + info.getStart() + "\n");
buffer.append("End : " + info.getEnd() + "\n\n");
}
showMessage("Vacations", buffer.toString());
}
});
}
public void showMessage(String title, String message)
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(message);
builder.show();
}
@Override
public void onClick(View v)
{
if (v == btnDatePicker)
{
// Get Current Date
java.util.Calendar c = Calendar.getInstance();
mYear = c.get(java.util.Calendar.YEAR);
mMonth = c.get(java.util.Calendar.MONTH);
mDay = c.get(java.util.Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
txtDate.setText((monthOfYear + 1) + "-" + dayOfMonth + "-" + year);
}
}, mYear, mMonth, mDay);
datePickerDialog.show();
}
if (v == btnDatePicker2)
{
// Get Current Date
java.util.Calendar c2 = java.util.Calendar.getInstance();
mYear2 = c2.get(java.util.Calendar.YEAR);
mMonth2 = c2.get(java.util.Calendar.MONTH);
mDay2 = c2.get(java.util.Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
txtDate2.setText((monthOfYear + 1) + "-" + dayOfMonth + "-" + year);
}
}, mYear2, mMonth2, mDay2);
datePickerDialog.show();
}
/*String i = txtDate.getText().toString();
String k = txtDate2.getText().toString();
if(i.compareTo(k) < 0)
{
System.out.println("HERE");
}*/
}
}
這裏是我的代碼活動C:看起來緊密地在我的ONBACKPRESSED()
import android.app.TabActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.TextView;
@SuppressWarnings("deprecation")
public class TabbedActivity extends TabActivity {
TextView tv_from, tv_to, tv_start, tv_end;
TabHost tabHost;
final Context context = this;
TextView t;
TextView d;
ListView lst;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabs);
viewOneItem();
//Assign id to Tabhost.
tabHost = (TabHost) findViewById(android.R.id.tabhost);
//Creating tab menu.
final TabHost.TabSpec TabMenu1 = tabHost.newTabSpec("First tab");
final TabHost.TabSpec TabMenu2 = tabHost.newTabSpec("Second Tab");
final TabHost.TabSpec TabMenu3 = tabHost.newTabSpec("Third Tab");
//Setting up tab 1 name.
TabMenu1.setIndicator("Trip");
//Set tab 1 activity to tab 1 menu.
//TabMenu1.setContent(new Intent(this,TabActivity_1.class));
TabMenu1.setContent(R.id.tab1);
//Setting up tab 2 name.
TabMenu2.setIndicator("Map");
//Set tab 3 activity to tab 1 menu.
//TabMenu2.setContent(new Intent(this, TabActivity_2.class));
//TabMenu2.setContent(R.id.tab2);
//TabMenu2.setContent(new Intent(this,DialogInMap.class));
TabMenu2.setContent(new Intent(this,TabActivity_2.class));
//Setting up tab 2 name.
TabMenu3.setIndicator("Record");
//Set tab 3 activity to tab 3 menu.
//TabMenu3.setContent(R.id.tab3);
TabMenu3.setContent(new Intent(this, TabActivity_3.class));
//Adding tab1, tab2, tab3 to tabhost view.
tabHost.addTab(TabMenu1);
tabHost.addTab(TabMenu2);
tabHost.addTab(TabMenu3);
}
public void viewOneItem() {
tv_from = (TextView)findViewById(R.id.tv_from);
tv_to = (TextView)findViewById(R.id.tv_to);
tv_start = (TextView)findViewById(R.id.tv_start);
tv_end = (TextView)findViewById(R.id.tv_end);
// tv = (TextView) findViewById(R.id.textView);
Intent intent2 = getIntent();
Bundle bd = intent2.getExtras();
if(bd != null)
{
String fr = bd.getString("f");
String toooo= bd.getString("t");
String st = bd.getString("s");
String en = bd.getString("e");
tv_from.setText("From " + SingletonFromTo.getInstance().getFrom());
tv_to.setText("To " + SingletonFromTo.getInstance().getTo());
//tv_from.setText("From " + fr);
//tv_to.setText("To " + toooo);
tv_start.setText("Start " +SingletonFromTo.getInstance().getStart());
//tv_start.setText("Start " + st);
// tv_end.setText("End " + en);
tv_end.setText("End " + SingletonFromTo.getInstance().getEnd());
// String f = bd.getString("f");
// tv.setText(f);
}
}
@Override
public void onBackPressed()
{
Intent inte = new Intent(TabbedActivity.this, MainActivity.class);
startActivity(inte);
}
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId()){
case R.id.tab1:
return true;
case R.id.tab2:
return true;
case R.id.tab3:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
通過刪除@Override for onBackPressed()仍然清空我的活動A的列表視圖。 –
從活動C中刪除整個'onBackPress'方法C –
如果我刪除整個方法並返回...它將轉到活動B –