Retrofit2标量转换器不转换之前gson转换器android

我在Android中使用标量转换器工厂以及gson转换器之后进行了以下改进,但是当我调用字符串调用时,响应以字符串的形式出现,它给了我“不是JSON对象:”成功的例外。 我错过了什么? 改造创造: Retrofit retrofit = new Retrofit.Builder() .addConverterFactory(ScalarsConverterFactory.create()) .addConverterFactory(GsonConverterFactory.create(gson)) .baseUrl(IPService.END) .client(new OkHttpClient.Builder().build()) .build(); 创建电话: @POST("/friends/sendRequest") Call<String> sendFriendRequest(…); 呼叫执行: Response<String> a = myApi.sendFriendRequest(…).execute(); 反应的身体是“成功”。

Android – 使用画布在背景颜色之外设置背景颜色

我正在研究Camera Activity Overlay,我已经成功地在矩形外部(不透明的黑色)创建了不透明的颜色。 而且我已经成功地在大矩形内创建了一个小矩形。 请看下面的图片。 正如你所看到的,小矩形上有一个蓝色的背景。 问题是,我想要在图像(位图)之外制作蓝色背景,而不是覆盖图像。 问题是,如果我用透明填充来改变图像,那么蓝色的背景将会覆盖全部。 我怎样才能使蓝色背景只覆盖图像的外部? 我已经试图从谷歌找到所有可能的答案,但对我来说没有运气,也许我开始用错误的方法,需要咨询。 这是我的代码 bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888); Canvas osCanvas = new Canvas(bitmap); RectF outerRectangle = new RectF(0, 0, getWidth(), getHeight()); Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(getResources().getColor(R.color.opaque_black)); paint.setAlpha(99); osCanvas.drawRect(outerRectangle, paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT)); paint.setColor(Color.TRANSPARENT); paint.setStyle(Paint.Style.FILL); RectF r1 = new RectF( (float) (xStartingPoint), (float) (yStartingPoint), (float) (parentWidth), (float) (parentHeight)); […]

将匹配Java方法声明的正则表达式

我需要一个匹配java方法声明的正则表达式。 我想出了一个匹配方法声明的方法,但是它要求方法的左括号与声明位于同一行。 如果你有任何改善我的正则表达式的建议,或者只是有一个更好的,那么请提交一个答案。 这是我的正则表达式: "\w+ +\w+ *\(.*\) *\{" 对于那些不知道java方法是什么样子的人,我会提供一个基本的方法: int foo() { } Java方法有几个可选的部分,可以添加,但这些是一个方法保证唯一的部分。 更新:我目前的正则表达式是"\w+ +\w+ *\([^\)]*\) *\{"以防止Mike和adkom描述的情况。

Rx concatWith()只返回第一个Flowable结果

我已经公布了他们正在单独工作的所有方法,但是我遇到了第一个问题,在那里我concatWith()两个流动 return userFavouriteStores() .concatWith(userOtherStores()) .doOnNext(new Consumer<List<StoreModel>>() { @Override public void accept(@io.reactivex.annotations.NonNull List<StoreModel> storeModels) throws Exception { Log.i("storeModels", "" + storeModels); } }) public Flowable<List<StoreModel>> userFavouriteStores() { return userStores() .map(UserStores::favoriteStores) .flatMap(storeId -> storeDao.storesWithIds(storeId)) .map(stores -> { // TODO Konvert to Kotlin map {} List<StoreModel> result = new ArrayList<>(stores.size()); for (se.ica.handla.repositories.local.Store store : stores) { result.add(store.toStoreModel(StoreModel.Source.Favourite)); } […]

为什么Kotlin的字符串插值在Java中串联字符串?

所以,基本上我想知道Kotlin的字符串插值如何看Java(反编译的字节码)。 起初我以为它会使用StringBuffer(或StringBuilder)或String.format(),但它似乎是串联。 这样做真的是最佳吗?字符串池呢? 这是我的Kotlin代码: fun main(args: Array<String>) { val age : Int = 24 var mySuperString : String = "Dato is ${age} years old!" println(mySuperString) } 这里是我反编译的Java代码形式* .class文件: import java.io.PrintStream; import kotlin.Metadata; import kotlin.jvm.internal.Intrinsics; import org.jetbrains.annotations.NotNull; @Metadata(mv={1, 1, 6}, bv={1, 0, 1}, k=2, d1={"\000\024\n\000\n\002\020\002\n\000\n\002\020\021\n\002\020\016\n\002\b\002\032\031\020\000\032\0020\0012\f\020\002\032\b\022\004\022\0020\0040\003 \006\002\020\005 \006\006"}, d2={"main", "", "args", "", "", "([Ljava/lang/String;)V", "KotlinProject"}) public final […]

ArrayList <String?>中有什么用?

这是否意味着列表项可以是String或非String ? 我在下面的代码中找到了用法: class KotlinGreetingJoiner(val greeter: Greeter) { val names = ArrayList<String?>() fun addName(name: String?) { names.add(name) } fun getJoinedGreeting(): String { val joiner = Joiner.on(" and ").skipNulls() return "${greeter.getGreeting()} ${joiner.join(names)}" } }

getContentResolver.openInputStream返回一个空的流

我正在从WhatsApp共享一个音频文件(opus文件)到我的应用程序。 当我试图读取文件使用 val uri: Uri = intent.getParcelableExtra(Intent.EXTRA_STREAM) val inputStream = contentResolver.openInputStream(uri) val byteArray = IOUtils.toByteArray(inputStream) 我得到一个空的ByteArray 我试过像这样使用BitmapFactory.decodeStream : val uri: Uri = intent.getParcelableExtra(Intent.EXTRA_STREAM) val inputStream = contentResolver.openInputStream(uri) val bitmap = BitmapFactory.decodeStream(inputStream) 但是BitmapFactory.decodeStream只返回null 。 我也试过查询这个uri的内容解析器,但是我得到的只是文件名和文件大小。 uri值是"content://com.whatsapp.provider.media/item/133401" 但是,当我试图从WhatsApp共享一个图像到我的应用程序,并使用上述相同的代码,一切正常,我得到所需的byteArray 。 我很想在这里得到一些帮助 谢谢!

在IntelliJ中找到文件,但不是在建立的jar

我通过编译器运行一些代码,我必须查询用户正在使用哪个操作系统来调用相应的二进制文件。 代码工作,并在IntelliJ中调用二进制文件,但是当我用gradle生成一个jar文件时,我得到一个文件找不到异常(二进制)对应于val tempBinaryCopy的行。 fun assemble(file: String) { val currentDirectory = System.getProperty("user.dir") val binary = when { System.getProperty("os.name").startsWith("Linux") -> javaClass.classLoader.getResource("osx_linux").file System.getProperty("os.name").startsWith("Mac") -> javaClass.classLoader.getResource("osx_mac").file else ->javaClass.classLoader.getResource("osx_win.exe").file } val binaryFile = File(binary).name val assemblyFile = File(file).name val tempBinaryCopy = File(binary).copyTo(File(currentDirectory, binaryFile), true) val tempAssemblyCopy = File(file).copyTo(File(currentDirectory, assemblyFile), true) tempAssemblyCopy.deleteOnExit() tempBinaryCopy.deleteOnExit() Files.setPosixFilePermissions(tempBinaryCopy.toPath(), setOf(PosixFilePermission.OWNER_EXECUTE)) val process = Runtime.getRuntime().exec(arrayOf(tempBinaryCopy.absolutePath, tempAssemblyCopy.absolutePath, "-v")) […]

从gradle创建maven包装器pom.xml:不能创建<build>元素

我如何设置sourceDirectory , testSourceDirectory并在我使用gradle maven-plugin的pom DSL创建的pom.xml中构建plugins ? 当我添加没有Closure到我的DSL部分的build ,没关系..但是当我添加build { /* anything else, like actual compile plugins */}它给了我这个错误: Execution failed for task ':mavenWrapper'. > No such property: _SCRIPT_CLASS_NAME_ for class: org.apache.maven.model.Model 我猜Gradle将build视为任务,而不是由org.sonatype.maven.polyglot.groovy.builder.ModelBuilder生成的DSL谓词。 有没有办法强制build被视为DSL的一部分? 它可以被施放什么? 现在我正在通过使用.withXml解决这个问题,但是它非常冗长,而且维护起来也很少。 这里是我工作的缩写版本: task mavenWrapper { doLast { delete 'pom.xml', 'mvnw', 'mvnw.cmd' pom { project { packaging 'pom' repositories { repository { id […]

为什么在OnCreate()中设置ViewTreeObserver> OnScrollChangedListener不会在Android 2.x上调用?

我发现Android 2.x上的OnScrollChangedListener在第一次布局绘制之前就不会被解雇。 例如,当您在onCreate / onResume / onAttachedToWindow方法中添加滚动侦听onAttachedToWindow : public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); View myView = findViewById(R.id.MyView); System.out.println(myView.getViewTreeObserver().isAlive()); // true myView.getViewTreeObserver().addOnScrollChangedListener(new OnScrollChangedListener() { @Override public void onScrollChanged() { // will never fire } }); } } 那么有人知道这个问题的原因吗? PS:看起来像API <= 15(Android 4.0.3)