小编use*_*182的帖子

E/AndroidRuntime:致命异常:main 和 Coroutine,Retrofit2

我刚开始学习 kotlin,我的第一个应用程序使用 Retrofit2 和 Coroutine,但是有问题。我有一些错误,但是通过协程,堆栈跟踪的信息非常差。也许有人会发现错误或知道 hot 以使堆栈跟踪信息更丰富。

服务:

const val API_KEY = "Bcae2032bb596c73b10bdab625c037da"

interface CurrencyApi {

//https://api.currencystack.io/currency?base=USD&target=EUR&apikey=Bcae2032bb596c73b10bdab625c037da

@GET("currency")
fun getCurrentCurrency(
    @Query("base") base: String,
    @Query("target") target: String
): Deferred<Currency>

companion object {
    operator fun invoke(): CurrencyApi {
        val requestInterceptor = Interceptor { chain ->

            val url = chain.request()
                .url()
                .newBuilder()
                .addQueryParameter("key", API_KEY)
                .build()
            val request = chain.request()
                .newBuilder()
                .url(url)
                .build()

            return@Interceptor chain.proceed(request)
        }

        val okHttpClient = OkHttpClient.Builder()
            .addInterceptor(requestInterceptor)
            .build()

        return Retrofit.Builder()
            .client(okHttpClient)
            .baseUrl("https://api.currencystack.io/")
            .addCallAdapterFactory(CoroutineCallAdapterFactory())
            .addConverterFactory(GsonConverterFactory.create())
            .build()
            .create(CurrencyApi::class.java)
    }
}
Run Code Online (Sandbox Code Playgroud)

活动:

 class …
Run Code Online (Sandbox Code Playgroud)

android coroutine kotlin retrofit2 kotlinx.coroutines

2
推荐指数
1
解决办法
3528
查看次数

如何在数据绑定的片段中使用onClick?

我想在片段中使用onClick方法,但数据绑定看不到方法。

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    FragmentTodayBinding fragmentTodayBinding = DataBindingUtil.inflate(inflater,R.layout.fragment_today, container, false);
    View view = fragmentTodayBinding.getRoot();
    final MainViewModel mainViewModel = ViewModelProviders.of(this).get(MainViewModel.class);
    fragmentTodayBinding.setMainViewModel(mainViewModel);
fragmentTodayBinding.searchButton.setOnClickListener(this::onSearchClick);          
    });

    return view;
}

@Override
public void onSearchClick(View v) {
    mainViewModel.getCity();
    Toast.makeText(getActivity(), "X", Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)

按钮xml:

   <Button
    android:id="@+id/search_button"
    android:onClick="@{(v)-> todayFragmentInterface.onSearchClick(v)}"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_alignParentEnd="true"
    android:layout_marginEnd="10dp"
    android:layout_marginTop="5dp"
    android:background="@drawable/ic_search_white_24dp" />
Run Code Online (Sandbox Code Playgroud)

如何正确使用它的片段?

data-binding android

2
推荐指数
1
解决办法
1421
查看次数