解析服务器 Android Studio 未显示信息
Parse Server Android Studio not showing information
我的问题是我的解析服务器无法从我的应用程序中获取任何信息。我已经包含了错误日志、启动器 class 和主要 class。我的解析服务器显示没有传递给它的信息。
package com.karanvir.myapplication5;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import com.parse.Parse;
import com.parse.ParseAnalytics;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.SaveCallback;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Parse.enableLocalDatastore(this);
ParseObject object= new ParseObject("example");
object.put("my number","123");
object.put("my string","karn");
object.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if(e==null){
Log.i("hello","anything");
} else {
Log.i("random","morerandom");
}
}
});
ParseAnalytics.trackAppOpenedInBackground(getIntent());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
07-13 11:47:23.618 16945-16945/com.karanvir.myapplication5 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.karanvir.myapplication5, PID: 16945
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.karanvir.myapplication5/com.karanvir.myapplication5.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
at android.app.ActivityThread.access00(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference
at com.parse.Parse.getParseDir(Parse.java:499)
at com.parse.ParseCorePlugins.getLocalIdManager(ParseCorePlugins.java:328)
at com.parse.ParseObject.getLocalIdManager(ParseObject.java:87)
at com.parse.ParseObject.getOrCreateLocalId(ParseObject.java:1310)
at com.parse.ParseObject.saveEventually(ParseObject.java:1719)
at com.parse.ParseObject.saveEventually(ParseObject.java:1673)
at com.karanvir.myapplication5.MainActivity.onCreate(MainActivity.java:31)
at android.app.Activity.performCreate(Activity.java:6876)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
at android.app.ActivityThread.access00(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
/*
* Copyright (c) 2015-present, Parse, LLC.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.karanvir.myapplication5;
import android.app.Application;
import android.util.Log;
import com.parse.Parse;
import com.parse.ParseACL;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseUser;
import com.parse.SaveCallback;
public class StarterApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// Enable Local Datastore.
Parse.enableLocalDatastore(this);
// Add your initialization code here
Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
.applicationId("783b7")
.clientKey( "3b6")
.server( "httpe/")
.build()
);
/* ParseObject object = new ParseObject("ExampleObject");
object.put("myNumber", "123");
object.put("myString", "rob");
object.saveInBackground(new SaveCallback () {
@Override
public void done(ParseException ex) {
if (ex == null) {
Log.i("Parse Result", "Successful!");
} else {
Log.i("Parse Result", "Failed" + ex.toString());
}
}
});*/
ParseUser.enableAutomaticUser();
}
}
package com.karanvir.myapplication5;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import com.parse.Parse;
import com.parse.ParseAnalytics;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.SaveCallback;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Parse.enableLocalDatastore(this);
ParseObject object= new ParseObject("example");
object.put("my number","123");
object.put("my string","karn");
object.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if(e==null){
Log.i("hello","anything");
} else {
Log.i("random","morerandom");
}
}
});
ParseAnalytics.trackAppOpenedInBackground(getIntent());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
我认为您需要将此行放在 object.put(...);
之后
object.saveInBackground();
参考http://docs.parseplatform.org/android/guide/,看到"Saving Objects"和"The Local Datastore."他们将信息放入对象后有如下代码
pinInBackground();
saveInBackground();
还有一个建议,出于安全原因,您的applicationID、clientKey和您的服务器地址应该被屏蔽。
首先你不应该公开任何这个 - applicationId, clientKey, server{or any other key} 你应该像这样将它添加到你的 gradle.property
MyApiKey="2000000000000000"
得到它,这样在你的
gradle buildTypes.each {it.buildConfigField 'String', 'TOKEN_API_KEY', MyApiKey}
您可以通过这种方式使用任何 activity 中的密钥
字符串我的 = BuildConfig.TOKEN_API_KEY
因此,例如,在您的代码中,您将拥有 .clientKey(BuildConfig.TOKEN_API_KEY)
针对你的问题
您应该记录您的响应,这不仅可以让您更轻松地调试或查看结果值,您还可以设置断点并进入、退出并查看发生了什么。要设置日志,您需要 Log.d(TAG, value) 其中 TAG 是 private static final String TAG = yourClass.class.getSimpleName();
您需要将解析信息放入另一个扩展应用程序的class。
查看我对其他人的回答 post。
一旦你这样做了,MainActivity 就可以根据你的需要托管你的应用程序。如果您有任何问题,请告诉我
这是关于如何在任何 ANDROID 工作室项目上设置 PARSE 的解决方案!
第 1 步:我在 build.gradle(Module:) 中的依赖项下编写了以下代码:-
compile 'com.parse:parse-android:1.15.7'
(下一次同步您的 GRADLE)
通过这样做,您将能够神奇地使用解析关键字和方法。
第 2 步:现在是转折点。您不需要在您的 ANDROID 项目中安装 STARTERAPPLICATION JAVA CLASS。
也不需要其他 CLASS 人!
还添加以下内容
/要放入 ANDROIDMANIFEST 中的代码:/
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
现在进入第 3 步
第 3 步:******这是重要部分****
你必须初始化你的 PARSE,(由于我的知识有限,我在 MAINACTIVITY 的 ONCREATE 函数中初始化了它)
Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
.applicationId("YOUR_APP_ID")
.clientKey("YOUR_MASTER_KEY")
.server("YOUR_SERVER_URL")
.build()
);
大功告成!!!您已成功设置 PARSE!!!!!!!
我的问题是我的解析服务器无法从我的应用程序中获取任何信息。我已经包含了错误日志、启动器 class 和主要 class。我的解析服务器显示没有传递给它的信息。
package com.karanvir.myapplication5;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import com.parse.Parse;
import com.parse.ParseAnalytics;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.SaveCallback;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Parse.enableLocalDatastore(this);
ParseObject object= new ParseObject("example");
object.put("my number","123");
object.put("my string","karn");
object.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if(e==null){
Log.i("hello","anything");
} else {
Log.i("random","morerandom");
}
}
});
ParseAnalytics.trackAppOpenedInBackground(getIntent());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
07-13 11:47:23.618 16945-16945/com.karanvir.myapplication5 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.karanvir.myapplication5, PID: 16945
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.karanvir.myapplication5/com.karanvir.myapplication5.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
at android.app.ActivityThread.access00(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference
at com.parse.Parse.getParseDir(Parse.java:499)
at com.parse.ParseCorePlugins.getLocalIdManager(ParseCorePlugins.java:328)
at com.parse.ParseObject.getLocalIdManager(ParseObject.java:87)
at com.parse.ParseObject.getOrCreateLocalId(ParseObject.java:1310)
at com.parse.ParseObject.saveEventually(ParseObject.java:1719)
at com.parse.ParseObject.saveEventually(ParseObject.java:1673)
at com.karanvir.myapplication5.MainActivity.onCreate(MainActivity.java:31)
at android.app.Activity.performCreate(Activity.java:6876)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
at android.app.ActivityThread.access00(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
/*
* Copyright (c) 2015-present, Parse, LLC.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.karanvir.myapplication5;
import android.app.Application;
import android.util.Log;
import com.parse.Parse;
import com.parse.ParseACL;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseUser;
import com.parse.SaveCallback;
public class StarterApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// Enable Local Datastore.
Parse.enableLocalDatastore(this);
// Add your initialization code here
Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
.applicationId("783b7")
.clientKey( "3b6")
.server( "httpe/")
.build()
);
/* ParseObject object = new ParseObject("ExampleObject");
object.put("myNumber", "123");
object.put("myString", "rob");
object.saveInBackground(new SaveCallback () {
@Override
public void done(ParseException ex) {
if (ex == null) {
Log.i("Parse Result", "Successful!");
} else {
Log.i("Parse Result", "Failed" + ex.toString());
}
}
});*/
ParseUser.enableAutomaticUser();
}
}
package com.karanvir.myapplication5;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import com.parse.Parse;
import com.parse.ParseAnalytics;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.SaveCallback;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Parse.enableLocalDatastore(this);
ParseObject object= new ParseObject("example");
object.put("my number","123");
object.put("my string","karn");
object.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if(e==null){
Log.i("hello","anything");
} else {
Log.i("random","morerandom");
}
}
});
ParseAnalytics.trackAppOpenedInBackground(getIntent());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
我认为您需要将此行放在 object.put(...);
之后object.saveInBackground();
参考http://docs.parseplatform.org/android/guide/,看到"Saving Objects"和"The Local Datastore."他们将信息放入对象后有如下代码
pinInBackground();
saveInBackground();
还有一个建议,出于安全原因,您的applicationID、clientKey和您的服务器地址应该被屏蔽。
首先你不应该公开任何这个 - applicationId, clientKey, server{or any other key} 你应该像这样将它添加到你的 gradle.property MyApiKey="2000000000000000" 得到它,这样在你的 gradle buildTypes.each {it.buildConfigField 'String', 'TOKEN_API_KEY', MyApiKey} 您可以通过这种方式使用任何 activity 中的密钥 字符串我的 = BuildConfig.TOKEN_API_KEY 因此,例如,在您的代码中,您将拥有 .clientKey(BuildConfig.TOKEN_API_KEY)
针对你的问题 您应该记录您的响应,这不仅可以让您更轻松地调试或查看结果值,您还可以设置断点并进入、退出并查看发生了什么。要设置日志,您需要 Log.d(TAG, value) 其中 TAG 是 private static final String TAG = yourClass.class.getSimpleName();
您需要将解析信息放入另一个扩展应用程序的class。
查看我对其他人的回答 post。
一旦你这样做了,MainActivity 就可以根据你的需要托管你的应用程序。如果您有任何问题,请告诉我
这是关于如何在任何 ANDROID 工作室项目上设置 PARSE 的解决方案!
第 1 步:我在 build.gradle(Module:) 中的依赖项下编写了以下代码:-
compile 'com.parse:parse-android:1.15.7'
(下一次同步您的 GRADLE)
通过这样做,您将能够神奇地使用解析关键字和方法。
第 2 步:现在是转折点。您不需要在您的 ANDROID 项目中安装 STARTERAPPLICATION JAVA CLASS。
也不需要其他 CLASS 人!
还添加以下内容
/要放入 ANDROIDMANIFEST 中的代码:/
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
现在进入第 3 步
第 3 步:******这是重要部分****
你必须初始化你的 PARSE,(由于我的知识有限,我在 MAINACTIVITY 的 ONCREATE 函数中初始化了它)
Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
.applicationId("YOUR_APP_ID")
.clientKey("YOUR_MASTER_KEY")
.server("YOUR_SERVER_URL")
.build()
);
大功告成!!!您已成功设置 PARSE!!!!!!!