0

Android アプリに Parse バックエンドを使用しています。特定の文字列値を持つフィールドを持つレコードをデータベースに照会する必要があります。以下はパースコードです

strObjectId は、次のように Parse ObjectId で初期化された文字列です。

        String strObjectId = MyParseObject.getObjectId();

コードを解析する

        ParseQuery<ParseObject> query = ParseQuery.getQuery("MyDataTable");
        query.whereEqualTo("code", Code);
        query.getFirstInBackground(new GetCallback<ParseObject>()
        {
          public void done(ParseObject object, ParseException e)
          {
            if (object == null) 
            {
                return;
            } 
            else 
            {
                ShowToast("Record found!");
            }
          }
        });

問題は、上記のクエリを実行する前に「コード」が次のようにハードコードされている場合、完全に正常に動作することです

        String Code = "krErZgz9Is";

ただし、次のようにコードに Parse ObjectId が割り当てられている場合は機能しません

        String Code = strObjectId;

明らかに、データ テーブルには、値が「krErZgz9Is」の「コード」フィールドを持つレコードがあります。

あなたの助けに感謝します

ありがとう

4

2 に答える 2

0

私はこれが私のために働いています

EditText を作成し、クエリで一致を見つけたいテキストを含めました。本当に表示したくない場合は、レイアウトで非表示にしてください。

EditText editText = (EditText) findViewById(R.id.editText);

editText.setText(strObjectId);


ParseQuery<ParseObject> query = ParseQuery.getQuery("MyDataTable");
query.whereEqualTo("code", editText.getText().toString());
query.getFirstInBackground(new GetCallback<ParseObject>()
{
    public void done(ParseObject object, ParseException e)
    {
        if (object == null) 
        {
            return;
        }
        else 
        {
            ShowToast("Record found!");
        }
    }
});

getText() 関数を削除してもうまくいかない理由がわからないので、このままにしておく方がよいでしょう。

于 2015-12-14T13:22:23.030 に答える