我想从对话框中选择项目后,从主要活动更新片段中的listview。
我在此活动中使用FragmentPagerAdapter
我的对话方法
private void showDialog(String routeName) {
MyTTCDB db = new MyTTCDB(this);
List<String> directions = db.getDirectionByRoute(routeName);
AlertDialog.Builder builderSingle = new AlertDialog.Builder(this);
builderSingle.setTitle("Direction");
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this, android.R.layout.select_dialog_singlechoice);
for (String string : directions) {
arrayAdapter.add(string);
}
builderSingle.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builderSingle.setAdapter(arrayAdapter,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String side = arrayAdapter.getItem(which);
FragmentStops fragment = (FragmentStops) mSectionsPagerAdapter
.getItem(1);
fragment.refresh(side);
}
});
builderSingle.show();
}
我的片段
import java.util.List;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.anilvasani.myttc.StopsActivity.Interface_FragmentStops;
import com.anilvasani.myttc.adapter.AdapterStops;
import com.anilvasani.myttc.data.MyTTCDB;
import com.anilvasani.myttc.models.Stop;
public class FragmentStops extends Fragment {
View view;
AdapterStops myAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragement_stops, container, false);
return view;
}
public void refresh(String side) {
// TODO Auto-generated method stub
String routeName = getActivity().getIntent()
.getStringExtra("routeName").toString();
ListView listStops = (ListView) view.findViewById(R.id.dialog_listView);
// EditText txtSearch=(EditText)
// view.findViewById(R.id.dialog_txtSearch);
MyTTCDB db = new MyTTCDB(getActivity());
List<Stop> allStops = db.getAllStopsByRouteAndSide(routeName, side);
myAdapter = new AdapterStops(getActivity(), allStops);
listStops.setAdapter(myAdapter);
}
}
我收到的错误就像......
12-14 23:43:02.696: E/MessageQueue-JNI(7577): java.lang.NullPointerException
12-14 23:43:02.696: E/MessageQueue-JNI(7577): at com.anilvasani.myttc.FragmentStops.refresh(FragmentStops.java:34)
12-14 23:43:02.696: E/MessageQueue-JNI(7577): at com.anilvasani.myttc.StopsActivity$3.onClick(StopsActivity.java:120)
12-14 23:43:02.696: E/MessageQueue-JNI(7577): at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:941)
所以请帮助我,如何根据用户的输入从Activity调用Fragment方法。
答案 0 :(得分:0)
看来你的错误来自这条线:
String routeName = getActivity().getIntent()
.getStringExtra("routeName").toString();
确保以下事项:
getIntent()
正在尝试返回该意图。我希望这会有所帮助