Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解析";未找到查询(代码101)的结果;。Can';无法获取对象id_Java_Android_Parse Server - Fatal编程技术网

Java 解析";未找到查询(代码101)的结果;。Can';无法获取对象id

Java 解析";未找到查询(代码101)的结果;。Can';无法获取对象id,java,android,parse-server,Java,Android,Parse Server,我已经在桌面上安装了示例解析服务器(),并制作了一个简单的应用程序来测试它 我的应用程序将对象保存到服务器,获取该对象并将mTextView的值设置为我的对象的值 问题是,当我尝试使用此代码从服务器获取数据时,它可以正常工作: query.getInBackground("5K7N8a8Dmd", new GetCallback<ParseObject>() ... MainActivity.java public class MainActivity exten

我已经在桌面上安装了示例解析服务器(),并制作了一个简单的应用程序来测试它

我的应用程序将对象保存到服务器,获取该对象并将mTextView的值设置为我的对象的值

问题是,当我尝试使用此代码从服务器获取数据时,它可以正常工作:

    query.getInBackground("5K7N8a8Dmd", new GetCallback<ParseObject>() ...

MainActivity.java

    public class MainActivity extends Activity {

    public TextView mTextView;
    public String objectId;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mTextView = (TextView) findViewById(R.id.text_view);

        Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
                        .applicationId(Constants.APP_ID)
                        .server(Constants.SERVER_URL)
                        .build()
        );

        final ParseObject gameScore = new ParseObject("Foo1234");
        gameScore.put("score", 5000);
        gameScore.saveInBackground(new SaveCallback() {
            public void done(ParseException e) {
                if (e == null) {
                    objectId = gameScore.getObjectId();
                } else {
                    Log.e("saveInBackground", getErrorMessage(e));
                }
            }
        });

        ParseQuery<ParseObject> query = ParseQuery.getQuery("Foo1234");
        query.getInBackground(objectId, new GetCallback<ParseObject>() {
            public void done(ParseObject object, ParseException e) {
                if (e == null) {
                    mTextView.setText(Integer.toString(gameScore.getInt("score")));
                } else {
                    Log.e("getInBackground", getErrorMessage(e));
                }
            }
        });
    }

    public String getErrorMessage(ParseException e) {
        return e.getMessage() + " - code: " + e.getCode();
    }
}
提前谢谢。

试试这个

ParseQuery<ParseObject> query = ParseQuery.getQuery("_Foo1234");
query.whereEqualTo("objectId","wfBB0gpCkP");
query.findInBackground(new FindCallback<ParseObject>() {
    public void done(List<ParseObject> objects, ParseException e) {
        if (e == null) {
            // row of Object Id "wfBB0gpCkP"
        } else {
            // error
        }
    }
});
ParseQuery query=ParseQuery.getQuery(“\u Foo1234”);
查询:whereEqualTo(“objectId”、“wfBB0gpCkP”);
findInBackground(新的FindCallback(){
公共void done(列出对象,parsee异常){
如果(e==null){
//对象Id为“wfBB0gpCkP”的行
}否则{
//错误
}
}
});
也改变

ParseQuery<ParseObject> query = ParseQuery.getQuery("Foo1234");
ParseQuery query=ParseQuery.getQuery(“Foo1234”);

ParseQuery query=ParseQuery.getQuery(“\u Foo1234”);
看看这是否有效。

问题在于
saveInBackground()
的“背景”部分。保存后的行上的保存未完成。事实上,它甚至还没有开始储蓄。在完成处理程序运行之前,保存不会完成

考虑一下

        // code here runs **first**
        gameScore.saveInBackground(new SaveCallback() {
        public void done(ParseException e) {
            // code here runs **third, much later than second**
            if (e == null) {
                objectId = gameScore.getObjectId();
            } else {
                Log.e("saveInBackground", getErrorMessage(e));
            }
        }
        // code here runs **second, immediately**

在save的完成处理程序中运行“get”查询,您将看到它是有效的。(当然,没有太多理由获取对象,因为您拥有刚刚调用save的对象的句柄)。

您在objectId中获得了任何值吗?@Le_Master yes。Log.i(“objectId”,objectId);-->I/objectId﹕ wfBB0gpCkP,但无法从done回调方法外部访问它,但我不想硬编码对象id“wfBB0gpCkP”,这是否有效?如果是,请用变量替换硬编码值,然后重试。更新答案。试试看,真管用!但是第二条线有点问题。我已经更改了这两个参数(改为(“某个字符串”,某个对象)),它仍然在工作。我甚至删除了这一行,它仍然在工作。我认为有必要使用对象id来检索对象的值?(在官方文档中,它说:“如果您有objectId,您可以使用ParseQuery检索整个ParseObject…”
ParseQuery<ParseObject> query = ParseQuery.getQuery("_Foo1234");
query.whereEqualTo("objectId","wfBB0gpCkP");
query.findInBackground(new FindCallback<ParseObject>() {
    public void done(List<ParseObject> objects, ParseException e) {
        if (e == null) {
            // row of Object Id "wfBB0gpCkP"
        } else {
            // error
        }
    }
});
ParseQuery<ParseObject> query = ParseQuery.getQuery("Foo1234");
ParseQuery<ParseObject> query = ParseQuery.getQuery("_Foo1234"); 
        // code here runs **first**
        gameScore.saveInBackground(new SaveCallback() {
        public void done(ParseException e) {
            // code here runs **third, much later than second**
            if (e == null) {
                objectId = gameScore.getObjectId();
            } else {
                Log.e("saveInBackground", getErrorMessage(e));
            }
        }
        // code here runs **second, immediately**