我的JSON结构如下 -
{
"status": true,
"message": "Registration Complete.",
"data": {
"user": {
"username": "user88",
"email": "user@domain.com",
"created_on": "1426171225",
"last_login": null,
"active": "1",
"first_name": "User",
"last_name": "",
"company": null,
"phone": null,
"sign_up_mode": "GOOGLE_PLUS"
}
}
}
Run Code Online (Sandbox Code Playgroud)
以上格式很常见.只有data钥匙可以容纳不同类型的信息,如user,product,invoice等.
我想保留status,message并data在每个休息响应中键入相同的键.data将根据待治疗status和message将被显示给用户.
所以基本上,所有api都需要以上格式.每次只有data密钥内的信息会有所不同.
我已经设置了以下类并将其设置为gson converter - MyResponse.java
public class MyResponse<T> implements Serializable{
private boolean status ;
private String message ;
private …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我需要在用户的时间轴上发布某些内容.我按照https://developers.facebook.com/docs/howtos/androidsdk/3.0/publish-to-feed/上的官方教程进行了操作.但是在本教程中,他们首先提到了设置Login流程.他们给了一个很好的指导.没关系.
但我想要的方式是,用户只会看到" 分享故事"按钮.如果用户已登录,则应直接发布故事.如果没有,应该遵循正常的登录流程,询问所需的权限,并且应该发布登录回调故事.我不想显式显示Login按钮.
我坚持这一点,因为在文档中,他们提到的任何地方都 <com.facebook.widget.LoginButton .... />用于登录目的.我根本不想使用它,因为这将要求用户进行两次交互.首先点击" 登录"按钮,第二次发布故事,他/她必须点击" 分享故事"按钮.
我无法找到一种方法来检查用户是否未登录并强制他/她先从我的代码块登录.
我的应用程序正在使用" 共享"按钮分享用户时间线上的故事.我正在做的是,用户点击"共享"按钮,如果用户会话不存在应用程序强制登录用户使用Facebook.当用户这样做时,直接需要发布故事.这是我的代码.
onCreate方法
isShared = false;
uiHelper = new UiLifecycleHelper(this, statusCallback);
uiHelper.onCreate(savedInstanceState);
Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
Session session = Session.getActiveSession();
if (session == null) {
if (savedInstanceState != null) {
session = Session.restoreSession(this, null, statusCallback,
savedInstanceState);
}
if (session == null) {
session = new Session(this);
}
Session.setActiveSession(session);
if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
session.openForRead(new Session.OpenRequest(this)
.setCallback(statusCallback));
}
}
if (savedInstanceState != null) {
pendingPublishReauthorization = savedInstanceState.getBoolean(
PENDING_PUBLISH_KEY, false);
}
shareBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
doPostStory();
}
});
Run Code Online (Sandbox Code Playgroud)
剩下的代码是 -
private …Run Code Online (Sandbox Code Playgroud) 我有以下表格 -
类别
+-----------+-------------+
| column | type |
+-----------+-------------+
| id | int(11) |
| name | varchar(40) |
| unit | varchar(50) |
| is_active | tinyint(1) |
+-----------+-------------+
Run Code Online (Sandbox Code Playgroud)
和
制品
+-------------+---------------+
| column | type |
+-------------+---------------+
| id | int(11) |
| category_id | int(11) |
| name | varchar(40) |
| base_rate | decimal(10,2) |
| is_active | tinyint(1) |
+-------------+---------------+
Run Code Online (Sandbox Code Playgroud)
我想获得类别列表以及活跃的产品数量.如果某个类别的产品没有活动,则应返回0.
有点像下表 -
+----+--------+--------------+
| id | name | active_count |
+----+--------+--------------+ …Run Code Online (Sandbox Code Playgroud) UPDATE
我没有提到任何关于使用ToolBar的内容ActionBarActivity.这就是我总是得到空指针异常的原因.对于那些面临同样问题的人,请参考这个答案
我有这个片段代码来更改片段时更改支持操作栏的外观.
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
mActionBar = ((ActionBarActivity)getActivity()).getSupportActionBar();
SpannableString s = new SpannableString("Dashboard");
s.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.app_blue_text)), 0, s.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
s.setSpan(new TypefaceSpan(getActivity(), "Optima-Regular.ttf"), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
if( null!= mActionBar){
mActionBar.setElevation(0);
mActionBar.setTitle(s);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经提到了有关如何解决此错误的先前/类似问题.这些解决方案建议在onActivityCreated()方法中改变动作栏外观.我onAttach()也试过了.似乎没有工作.我使用了支持操作栏来保持向后兼容性.Activity也相应地铸造ActionBarActivity.
完整的代码非常冗长,所以我跳过了它.如果需要,我可以发布完整的代码并更新问题以及更多细节.
错误日志
Caused by: java.lang.NullPointerException
at com.example.testapp.fragments.NavigationDrawerFragment.onActivityCreated(NavigationDrawerFragment.java:215)
Run Code Online (Sandbox Code Playgroud)
215行是: mActionBar.setElevation(0);
android android-appcompat android-fragments android-actionbar android-actionbar-compat