Android 如何从活动中调用片段方法来更新片段中的listview?

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

在从对话框中选择项之后,我想从主活动中更新片段中的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();

    }

因此,请帮助我,如何根据用户的输入从活动中调用片段方法。

您的错误似乎来自以下行:

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)