当前位置: 首页 > 知识库问答 >
问题:

Cloudboost Java Android Studio项目设置

呼延修然
2023-03-14

我正在尝试在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'
}

共有1个答案

刘弘济
2023-03-14

问题是,您正在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