我正在用ViewPager编写应用程序,我正在使用Fragments。一切正常(就像我想的那样)。
ViewPager中的一个片段有一个启动服务的按钮。
getActivity().startService(new Intent(getActivity(),Service.class))
是Button的代码。
现在,当我点击按钮时,没有任何反应。还有其他解决方案吗?
如果您需要更多信息和代码,请与我们联系。
感谢您的帮助。
答案 0 :(得分:7)
1)在清晰的声明服务中:
<service android:name=".GameService" />
2)NEXT WRITE CLASS WITCH EXTENDS SERVICE :(在我的例子中是Intent Serivce)
public class GameService extends IntentService
{
public GameService()
{
super("GameService");
}
@Override
protected void onHandleIntent(Intent intent)
{
..do some background work...
}
}
3)带有广播接收器的代码和带有呼叫服务的代码:
public class Stats_Fragment extends Fragment
{
BroadcastReceiver receiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle extras = intent.getExtras();
if(extras!=null)
{
//for example: extras.getString("value");
}
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.fragment_stats, container, false);
//CALLING SERIVCE (I call it here but you can call somewhere else...
Intent intent = new Intent(getActivity(), GameService.class);
intent.putExtra("Intent_Action", 3);
intent.putExtra("playerID", MainClass.loggedUserID);
getActivity().startService(intent);
}
@Override
public void onResume() {
super.onResume();
getActivity().registerReceiver(receiver, new IntentFilter(GameService.NOTIFICATION));
CallStatsService();
}
@Override
public void onPause()
{
super.onPause();
getActivity().unregisterReceiver(receiver);
}
}
我希望它会有所帮助:)
答案 1 :(得分:1)
这几乎总是与不将服务注册到清单有关。一直发生在我身上。刚刚放
<service android:name="your.package.name.YourService"/
&GT;
进入你的清单。