Android 如何从活动中调用片段方法来更新片段中的listview?
在从对话框中选择项之后,我想从主活动中更新片段中的listview 我在这项活动中使用FragmentPagerAdapter 我的对话方法Android 如何从活动中调用片段方法来更新片段中的listview?,android,android-fragments,Android,Android Fragments,在从对话框中选择项之后,我想从主活动中更新片段中的listview 我在这项活动中使用FragmentPagerAdapter 我的对话方法 private void showDialog(String routeName) { MyTTCDB db = new MyTTCDB(this); List<String> directions = db.getDirectionByRoute(routeName); AlertDialo
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();
}
因此,请帮助我,如何根据用户的输入从活动中调用片段方法。您的错误似乎来自以下行:
String routeName=getActivity().getIntent()
.getStringExtra(“routeName”).toString()代码>
确保以下事项:
- 当您启动调用刷新方法的活动(该对话框附加到的活动)时,您在意图中启动该活动,因为
getIntent()
正在尝试返回该意图
- 接下来,确保有一个名为“routeName”的字符串,并且该字符串不为null李>
我希望这有帮助第34行是什么FragmetnStops.java
?看起来您正在从DialogFragment成功调用StopFragment中的refresh(),但您在StopsFragment类的第34行收到一个NullPointerError。检查第34行的变量,看看什么是空的。我想你可以使用监听器。
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)