我正在尝试在Android Studio中的Cloud增强JavaSdk,并遇到了一个障碍,我希望有人能帮助我。我想我已经正确地设置了这个项目,但是Logcat告诉我其他方面。我已经包含了所有相关文件的片段供您审查。谢啦
首先,这里是logcat错误:
致命异常:主进程:main.dozer74.cloudboosttest,PID: 18357java.lang.IllegalStateExcture:无法执行Android的方法:在android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.on单击(AppCompatViewInflater.java:293)在android.view.View.perform单击(View.java:5198)在android.view.查看$PerformClick.run(View.java:21147)在android.os.Handler.handle回调(Handler.java:739)在android.os.Handler.dispatch消息(Handler.java:95)在android.os.Looper.loop(Looper.java:148)在android. app.ActivityThread. main(ActivityThread. java: 5417)在java. lang.反射。方法调用(本机方法)在com. android. interal. os。ZygoteInit$method odAndArgsCaller. run(ZygoteInit. java: 726)在com. android. interal. os。ZygoteInit. main(ZygoteInit. java: 616)引起:java. lang.反射。在java. lang.反射率。在android. support. v7. app中调用(本机方法)。AppCompatViewInflater$DeclaredOnClickListenerer. onClark(AppCompatViewInflater. java: 288)在android. view。查看. perform单击(查看. java: 5198)
应用程序非常简单;只是一个执行查询的按钮
按钮xml代码
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Get Troops From Database"
android:id="@+id/button"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:onClick="getTroopsFromDatabase"/>
按钮的Java代码:
public void getTroopsFromDatabase(View view) {
//Log.d("dozer74", "Get troops from database");
CloudQuery query = new CloudQuery("Messages");
try {
query.find(new CloudObjectArrayCallback(){
@Override
public void done(CloudObject[] x, CloudException t) {
if(x != null){
Log.d("dozer74", "====>>>> x is not equal to null");
} else {
Log.d("dozer74", "====>>>> x is equal to null");
}
if(t != null){
Log.d("dozer74", "====>>>> t is not equal to null");
} else {
Log.d("dozer74", "====>>>> t is equal to null");
}
}
});
} catch (CloudException e) {
e.printStackTrace();
}
}
这是我的清单,其中引用了一个名为Application的类,我的Cloudboost init发生在这个类中
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="main.dozer74.cloudboosttest">
<application
android:name=".Application"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
最后,这里是来自Application.class的代码,应用程序ID和主密钥“X”出于明显的原因,除了添加到我的build.gradle中的代码之外,我正在将sdk引入项目。
应用班
public class Application extends android.app.Application {
@Override
public void onCreate() {
super.onCreate();
//Init your Application
CloudApp.init("xxxxxxxxxxxx", "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
}
}
build.gradle片段
repositories {
maven {
url 'https://docs.cloudboost.io/java.html'
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'io.cloudboost:JavaSDK:1.0.3'
}
问题是,您正在UI线程上执行一个网络调用,这与android的建议背道而驰。改为这样做:
class Query extends AsyncTask<Void, Void, Void> {
@Override
protected String doInBackground(String... args) {
CloudQuery query = new CloudQuery("Messages");
try {
query.find(new CloudObjectArrayCallback(){
@Override
public void done(CloudObject[] x, CloudException t) {
if(x != null){
Log.d("dozer74", "====>>>> x is not equal to null");
} else {
Log.d("dozer74", "====>>>> x is equal to null");
}
if(t != null){
Log.d("dozer74", "====>>>> t is not equal to null");
} else {
Log.d("dozer74", "====>>>> t is equal to null");
}
}
});
} catch (CloudException e) {
e.printStackTrace();
}
return null;
}
}
然后在getTroopsFromDatabase
中执行任务
public void getTroopsFromDatabase(View view) {
//Log.d("dozer74", "Get troops from database");
new Query().execute();
}
主要包括: 项目信息及项目授权管理的配置。 7.1.1 项目信息 展示在新建项目时,您所填写的项目信息及备注,并且可在此进行修改。 7.1.2 授权管理 授权的主体为用户邮箱账号。 授权管理主要包含 项目的授权,及站点的授权。 分别介绍如下: 分类 授权项 解释 项目权限 无法查看项目用户 被授权账号拥有访问项目的权限,而无法查看项目是否有其他授权用户 项目权限 允许查看项目用户 被授权账号拥有访
Angular 2采用将应用程序分为许多不同组件的方法,每个组件可以有多个文件。以这种方式分离应用程序逻辑对程序员是有好处的,但是会减损用户体验,因为这样做会增加页面加载时间。 HTTP2旨在以一种方式解决这个问题,但是直到更多的知道它的效果,我们将需要捆绑我们的应用程序的不同部分,并压缩它。 我们的平台,浏览器,必须继续提供所有现有代码的向后兼容性,并且这需要慢慢移动添加到HTML / CSS
项目设置 面板通过主菜单的 项目->项目设置... 菜单打开,这里包括所有特定项目相关的设置。这些设置会保存在项目的 settings/project.json 文件里。如果需要在不同开发者之间同步项目设置,请将 settings 目录加入到版本控制。 分组管理 目前项目设置中的分组管理主要为 碰撞体系统 提供分组支持,详情请参考 碰撞分组管理。 模块设置 这里的设置是针对发布 Web 版游戏时引
项目设置面板通过主菜单的 项目 -> 项目设置 菜单打开,这里包括所有特定项目相关的设置,这些设置将会影响到整个游戏项目的预览、构建等。这些设置会保存在项目的 settings / packages 文件夹里。如果需要在不同开发者之间同步项目设置,请将 settings 目录加入到版本控制。 通用设置 默认 Canvas 设置 默认 Canvas 设置包括设计分辨率和适配屏幕宽度/高度,用于规定在
目前正在练习使用android studio制作应用程序。我有这个自定义字体,并保存到res/font目录中供以后使用。在活动中,我试图使用typeface对象调用getfont(R.font.my\u customized\u font)。例如)Typeface font=getResources()。getfont(R.font.mycustomizedfont) 但是,当我尝试使用API级别
Gradle 项目可以通过多项目配置依赖于其它 Gradle 项目。通常使用多项目配置会将所有库项目(如 lib1、lib2)添加到指定的根项目(如 libraries)。例如,给定以下项目结构: MyProject/ + app/ + libraries/ + lib1/ + lib2/ 我们可以找出3个项目。Gradle 将会按照以下名字进行映射: :app :librar