我有一个问题,我在一行上调用一个方法,在下一行我调用另一个方法,需要先前的方法完成,但不是正在发生的事情,我得到一个NPE;
这是我的专栏,它是在我长时间点击列表时开始的
@Override
public boolean onItemLongClick(AdapterView<?> adapter, View arg1, int pos,
long arg3) {
String nick = ((UserList) adapter.getAdapter()).getLista().get(pos)
.getNick();
if (activity.service.getConversa(nick) == null) {
activity.service.addPVTConversa(nick); //need this completed
}
activity.selectTab(nick); //to call this
return true;
}
然后我去addPVTConversa():
public void addPVTConversa(String target) {
pvts.add(new Conversa(this, target));
Intent it = new Intent(MyService.ACTION_NEW_PVT);
it.putExtra(MyService.EXTRA_NICK, target);
LocalBroadcastManager.getInstance(MyService.this).sendBroadcast(it);
}
接着是接收者:
@Override
public void onReceive(Context context, Intent intent) {
String target = intent.getStringExtra(MyService.EXTRA_NICK);
addPVTTab(target);
}
这是我的问题:我需要在addPVTTab()之后调用selectTab()方法,因为selectTab()正在查找尚未创建的选项卡。所有代码都在主线程上运行,但selectTab()在addPVTTab()之前调用。我该怎么办? 提前谢谢。
答案 0 :(得分:1)
是的,这是sendBroadcast()/onReceive()
的预期。您应该在selectTab()
中致电receiver.onReceive()
。