【问题标题】:Data Binding - Type parameter T has incompatible upper bounds : ViewDataBinding and SimpleCalculatorActivity数据绑定 - 类型参数 T 具有不兼容的上限:ViewDataBinding 和 SimpleCalculatorActivity
【发布时间】:2018-05-05 20:57:43
【问题描述】:

文件名:SimpleCalculatorActivity.java

Xml 文件名:simple_calculator.xml

我收到错误消息 Data Binding Android - Type parameter T has in compatible upper bounds : ViewDataBinding and SimpleCalculatorActivity in line binding = DataBindingUtil.setContentView(this, R.layout.simple_calculator);

我已尝试重命名 xml 文件并将其重命名为原始名称。但对我不起作用。

SimpleCalculatorActivity.java

package com.example.borntoflirt.design1;

import android.databinding.DataBindingUtil;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import java.text.DecimalFormat;

public class SimpleCalculatorActivity extends AppCompatActivity {

private SimpleCalculatorActivity binding;

// This simple calculator can only perform operations of either addition, subtraction, multiplication or division.
// So we define four static chars to represent these operations

private static final char ADDITION = '+';
private static final char SUBTRACTION = '-';
private static final char MULTIPLICATION = '*';
private static final char DIVISION = '/';

// Set variable for operations

private double digit;
private double total = Double.NaN;
private String CURRENT_ACTION;

private DecimalFormat decimalFormat;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    decimalFormat = new DecimalFormat("#.##########");
    binding = DataBindingUtil.setContentView(this, R.layout.simple_calculator);
}
}

【问题讨论】:

  • private SimpleCalculatorActivity binding; - 绑定应该是ViewDataBinding的某个子类
  • 怎么做。我是 Android 新手。
  • 请阅读this

标签: java android xml


【解决方案1】:

绑定的变量应该是:

SimpleCalculatorBinding binding = DataBindingUtil.setContentView(this, R.layout.simple_calculator);

请关注this post

默认情况下,会根据布局文件的名称生成一个Binding类,将其转换为Pascal大小写,并为其加上“Binding”后缀。上面的布局文件是main_activity.xml,所以生成的类是MainActivityBinding。

例如:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

   <LinearLayout
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
       <TextView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Test"/>
   </LinearLayout>
</layout>

【讨论】:

  • 确保你的布局根视图是:&lt;layout xmlns:android="http://schemas.android.com/apk/res/android"&gt;developer.android.com/topic/libraries/data-binding/index.html
  • 根视图意味着activity_main.xmlsimple_calculator.xml ???这可能是一个愚蠢的问题。但我是 Android 新手
  • 我的activity_main.xmlsimple_calculator.xml 具有相同的第一行代码&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
  • 我的意思是 simple_calculator.xml 例如:&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;layout xmlns:android="http://schemas.android.com/apk/res/android"&gt; &lt;LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"&gt; &lt;TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Test"/&gt; &lt;/LinearLayout&gt; &lt;/layout&gt;
  • 是的,它在simple_calculator.xml &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/holo_red_light" android:orientation="vertical" android:scrollbars="vertical" android:paddingLeft="15dp" android:paddingRight="15dp"&gt;
猜你喜欢
  • 2016-03-25
  • 2015-11-17
  • 1970-01-01
  • 2020-02-16
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-31
相关资源
最近更新 更多