0
编辑:我浏览了过去几个小时有关此许多问题,似乎没有适用于我有的代码;请不要标记为重复。刷新列表视图时,选择片段选项卡
发生了什么是在一个选项卡中,即时将项目添加到在单独的选项卡中查看的列表视图,但我希望能够更新列表视图与应用程序内添加的项目,而不必退出然后重新输入让列表更新。
这是我的两个片段Java文件的代码。
其中添加它:
package tabs.ibettergetagoodgradeforthisorillbepissed.sciencefair.beta.mmmeds.com.mmmedstabbeta;
/**
* Created by WindowsSucks on 10/29/2014.
*/
import android.app.AlertDialog;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.Fragment;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Locale;
public class AddMedFragment extends Fragment {
private CharSequence mTitle;
final static int RQS_1 = 1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View rootView = inflater.inflate(R.layout.add_med_layout, container,false);
final TextView medOut = (TextView)rootView.findViewById(R.id.medName);
final TextView doseOut = (TextView)rootView.findViewById(R.id.dosageout);
final TextView timeOut = (TextView)rootView.findViewById(R.id.timeOut);
final TextView dayout = (TextView)rootView.findViewById(R.id.daystxt);
final EditText med_dose = (EditText)rootView.findViewById(R.id.med_dose);
med_dose.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
doseOut.setText(med_dose.getText());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
final Button setTimePickerButton = (Button) rootView.findViewById(R.id.timePickerButton);
setTimePickerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Calendar mcurrentTime = Calendar.getInstance();
int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
int minute = mcurrentTime.get(Calendar.MINUTE);
TimePickerDialog dialog = new TimePickerDialog(getActivity(),
new TimePickerDialog.OnTimeSetListener(){
@Override
public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
if(selectedHour > 12){
selectedHour-= 12;
}
selectedMinute = timePicker.getCurrentMinute();
if(selectedMinute < 10){
//selectedMinute = String.valueOf(selectedMinute);
timeOut.setText(selectedHour + ":" +"0"+ selectedMinute);
}else{
timeOut.setText(selectedHour + ":" + selectedMinute);
}
}
},hour,minute,false);
dialog.setTitle("Select Time");
dialog.show();
}
});
final TextView medEntry = (TextView) rootView.findViewById(R.id.med_name);
medEntry.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
medOut.setText(medEntry.getText());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
final Button dayPicker = (Button)rootView.findViewById(R.id.dayPicker);
dayPicker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final CharSequence[] items = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
// arraylist to keep the selected items
final ArrayList selectedItems=new ArrayList();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Select Days To Take");
builder.setMultiChoiceItems(items, null,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int indexSelected,
boolean isChecked) {
if (isChecked) {
// If the user checked the item, add it to the selected items
selectedItems.add(indexSelected);
} else if (selectedItems.contains(indexSelected)) {
// Else, if the item is already in the array, remove it
selectedItems.remove(Integer.valueOf(indexSelected));
}
}
})
// Set the action buttons
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// Your code when user clicked on OK
// You can write the code to save the selected item here
String itemsChecked = selectedItems.toString();
String days = "";
if (itemsChecked.contains("0")) {
days = days + " Sunday";
}
if (itemsChecked.contains("1")) {
days = days + " Monday";
}
if (itemsChecked.contains("2")) {
days = days + " Tuesday";
}
if (itemsChecked.contains("3")) {
days = days + " Wednesday";
}
if (itemsChecked.contains("4")) {
days = days + " Thursday";
}
if (itemsChecked.contains("5")) {
days = days + " Friday";
}
if (itemsChecked.contains("6")) {
days = days + " Saturday";
}
dayout.setText(days);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// Your code when user clicked on Cancel
}
});
AlertDialog dialog = builder.create();//AlertDialog dialog; create like this outside onClick
dialog.show();
}
});
String SDRoot = Environment.getExternalStorageDirectory().getPath();
final File output = new File (SDRoot,"output.txt");
if(!output.exists()){
try {
output.createNewFile();
Context context = getActivity();
CharSequence text = "Output File Created!";
int duration = Toast.LENGTH_LONG;
Toast fileCreated = Toast.makeText(context, text, duration);
fileCreated.show();
} catch (IOException e) {
Context context = getActivity();
CharSequence text = "Output File Not Created!";
int duration = Toast.LENGTH_LONG;
Toast fileNotCreated = Toast.makeText(context, text, duration);
fileNotCreated.show();
e.printStackTrace();
}
}
Button addbutton = (Button)rootView.findViewById(R.id.addMeds);
addbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getActivity(),"Medication Added", Toast.LENGTH_SHORT).show();
String outputLine = medOut.getText() + " "+ doseOut.getText() +" "+ dayout.getText() +":" + " "+ ":" + timeOut.getText() + "\n";
try {
FileOutputStream fOut = new FileOutputStream(output, true);
OutputStreamWriter myOutputStreamWriter = new OutputStreamWriter(fOut);
myOutputStreamWriter.append(outputLine);
myOutputStreamWriter.flush();
myOutputStreamWriter.close();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getActivity(), e.getMessage(),
Toast.LENGTH_SHORT).show();
}
ListView list = (ListView) getActivity().findViewById(R.id.viewMedsTxt);
((BaseAdapter)list.getAdapter()).notifyDataSetChanged();
}
});
return rootView;
}
}
以及它被观看次数:
很多的感谢!
编辑:
FragmentPageAdapter:
package tabs.ibettergetagoodgradeforthisorillbepissed.sciencefair.beta.mmmeds.com.mmmedstabbeta;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.widget.BaseAdapter;
import android.widget.ListView;
public class FragmentPageAdapter extends FragmentPagerAdapter {
public FragmentPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
switch (arg0) {
case 0:
return new AddMedFragment(medView);
case 1:
return new ViewMedFragment();
default:
break;
}
return null;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 2;
}
}
我不是很懂你在说什么 – 2014-10-30 08:50:35
增加了一些代码。希望它有帮助 – maffelbaffel 2014-10-30 08:57:58
添加片段时medView来自哪里?并在代码中我会实现this.onUpdateListener.updateMed() 什么代码确切需要在updateMed方法中使用..? 增加了一些代码来显示如何IM加入我的片段 – 2014-10-30 14:07:12