小编Gim*_*ali的帖子

改造用于嵌套json的gson转换器与不同的对象

我的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,messagedata在每个休息响应中键入相同的键.data将根据待治疗statusmessage将被显示给用户.

所以基本上,所有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)

java android json gson retrofit

16
推荐指数
1
解决办法
1万
查看次数

android facebook sdk将feed发布到用户的时间轴

在我的应用程序中,我需要在用户的时间轴上发布某些内容.我按照https://developers.facebook.com/docs/howtos/androidsdk/3.0/publish-to-feed/上的官方教程进行了操作.但是在本教程中,他们首先提到了设置Login流程.他们给了一个很好的指导.没关系.

但我想要的方式是,用户只会看到" 分享故事"按钮.如果用户已登录,则应直接发布故事.如果没有,应该遵循正常的登录流程,询问所需的权限,并且应该发布登录回调故事.我不想显式显示Login按钮.

我坚持这一点,因为在文档中,他们提到的任何地方都 <com.facebook.widget.LoginButton .... />用于登录目的.我根本不想使用它,因为这将要求用户进行两次交互.首先点击" 登录"按钮,第二次发布故事,他/她必须点击" 分享故事"按钮.

我无法找到一种方法来检查用户是否未登录并强制他/她先从我的代码块登录.

android facebook facebook-android-sdk android-facebook

9
推荐指数
1
解决办法
3218
查看次数

facebook登录回调多次触发

我的应用程序正在使用" 共享"按钮分享用户时间线上的故事.我正在做的是,用户点击"共享"按钮,如果用户会话不存在应用程序强制登录用户使用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)

android facebook android-facebook

6
推荐指数
1
解决办法
3404
查看次数

根据条件连接两个表以及第二个表中的记录数

我有以下表格 -

这是SQLFIDDLE

类别

+-----------+-------------+
|  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)

mysql sql database join

5
推荐指数
1
解决办法
5236
查看次数

android getSupportActionBar()在片段中返回null

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

3
推荐指数
1
解决办法
9714
查看次数