从侦听器服务更新片段屏幕

时间:2014-05-28 11:34:15

标签: android fragment

我正在尝试在我的片段适配器中使用其中一个选项卡来更新传入的消息,在研究了一些关于片段之后,我看到没有理由我不应该这样做,但似乎片段有奇怪的行为。这是片段:

public class GamesFragment extends Fragment {
    public static ArrayList<String> messages = new ArrayList<String>();
    public static Handler mHandler = new Handler();
    private EditText recipient;
    private EditText textMessage;
    private static ListView listview;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.main, container, false);
        BusProvider.getInstance().register(this);
        return rootView;
    }

    class listener extends Activity {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            BusProvider.getInstance().register(this);
        }

        @Subscribe
        public void anotherButtonPress(ButtonEvent event) {
            String newtime = event.itime;
            String newname = event.name;
            messages.add("(" + newtime + ") " + newname + ":");
            messages.add(event.text);

            setListAdapter();
        }

        public void setListAdapter() {
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    R.layout.listitem, messages);
            listview.setAdapter(adapter);

        }
    }

}

我正在使用一个名为otto的事件总线,它工作正常,我确信消息已经到了这一点,但问题是屏幕没有对任何事情做出反应。你们知道这个解决方案吗?

1 个答案:

答案 0 :(得分:0)

我在这看到一个重大问题。您在Activity内有一个Fragment的子类。 Activities管理Fragments,它们不应位于Fragment内。

此外,您过早注册Bus。修复后,尝试将注册更改为onStart()中的Activity