重写方法中的变量名称不正确

时间:2018-03-11 11:23:29

标签: java android kotlin override

当我让Android Studio生成覆盖方法时,它将生成带有奇怪参数名称的方法。

例如根据文档onCheckedChanged应该如下所示:

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){}

但我得到了

public void onCheckedChanged(CompoundButton compoundButton, boolean b){}
我在DatePickerDialog中的

或onDateSet:

onDateSet(DatePicker datePicker, int i, int i1, int i2)

而不是

onDateSet(DatePicker view, int year, int month, int dayOfMonth)

我在项目中设置了Android SDK,并安装了Sources for Android 27。

有什么想法吗?

由于

3 个答案:

答案 0 :(得分:12)

它与add_action('woocommerce_order_status_changed', 'wc_order_uppdate_to_cancelled_status', 20, 4 ); function wc_order_uppdate_to_cancelled_status( $order_id, $old_status, $new_status, $order ){ // Targetting "processing" and "completed" orders status. if ( in_array( $new_status, array('processing', 'completed') ) ) { // Get the user ID $user_id = $order->get_customer_id(); $product_ids = wpprolister_array_intersect($user_id); // <== Changes in this function will be needed $matching_orders_ids = get_order_ids_from_bought_items( $product_ids, $user_id ); $orders_to_be_cancelled = array_pop( $orders_to_remove ); foreach ( array_pop( $matching_orders_ids ) as $cancelled_order_id ) { $cancelled_order = wc_get_order( $cancelled_order_id ); $$cancelled_order->update_status('cancelled', 'As you have brought new package this package has been cancelled'); } } } 文件中定义的compileSdkVersion有关。您应为用作build.gradle的API安装Sources for Android SDK。因此,请尝试在SDK Manager中安装等于compileSdkVersion的源代码版本。

我已经在compileSdkVersion文件中设置了compileSdkVersion 28。这是在安装源版本28之前和之后的结果(注意:此后您应该重新启动AndroidStudio):

之前:

build.gradle

之后:

val textWatcher = object: TextWatcher {

    override fun afterTextChanged(p0: Editable?) {
    }

    override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
    }

    override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
    }
}

更新:10/23/2018

关于 AppCompat-v28 库(例如val textWatcher = object: TextWatcher { override fun afterTextChanged(s: Editable?) { } override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { } } 类)的问题来自其RecyclerView工件。如果使用版本27.1.1库,该问题将消失。使用什么版本的28都无关紧要(例如28.0.0、28.0.0-alpha1、28.0.0-alpha3、28.0.0-rc1、28.0.0-rc2等)版本28发行版中,模糊了抽象方法的参数名称。

aar

因此,似乎没有办法解决,除非在下一个发行版中将其修复。

答案 1 :(得分:1)

正如造影学家所说,这是因为您尚未安装正在使用的compileSdk的源。 要安装源,请按照以下步骤操作:

  1. 检查项目的compileSdk版本。(来自应用程序级别build.gradle文件)。如您在下图中所看到的,我的compileSdk版本是26。因此,我必须安装平台26的源代码。

enter image description here

2。 转到sdk管理器,如果未选中,请在“ SDK平台”选项卡中选中show package details选项。然后安装您的compileSdk版本的源代码(在我的情况下是26)。而已。现在,您将获得适当的参数名称。

enter image description here

答案 2 :(得分:0)

参数名称可以是任何名称,不会影响代码。您可以将它们替换为所需的任何名称。

android studio的

+1应当实现适当的变量名称,以便我们无需了解文档即可大致了解该变量的用途。

到目前为止,我建议您参考所使用功能的文档。只是忽略变量名。 ...较小的名称可以帮助减小代码大小,并且在某些情况下,只要清楚说明了变量的用途,就可以提高可读性。

相关问题