首先,我需要承认这里有一个明显非常相似但不重复的问题。在该线程中提出的解决方案都不起作用。
我的应用程序文件结构如下:
app
java
[mydomain].[myapplication]
Models
DataModel.java
MainActivity.java
res
layout
activity_main.xml
content_main.xml
my_inner_layout.xml
我的应用程序build.gradle
包含
dataBinding {
enabled = true
}
import [mydomain].[myapplication].Models.DataModel;
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemsSelectedListener {
DataModel dataModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
... <other layout creation template code> ...
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
dataModel = new DataModel();
binding.setValues(dataModel);
}
<navigation and auto-generated methods>
}
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="values"
type="[mydomain].[myapplication].Models.DataModel" />
</data>
<android.support.constraint.ConstraintLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible"
>
<TextView
android:id="@+id/intro_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:text="@{values.valueOne}"/>
<TextView
android:id="@+id/buying_recommendation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/intro_text"
app:layout_constraintTop_toBottomOf="@id/intro_text"
android:text="@{values.valueTwo}"/>
</android.support.constraint.ConstraintLayout>
</layout>
在文本中,错误有不同的错误:无法找到符号类模型
和错误:包模型不存在
如果我将datamodel.java从Models包中移出并直接放入[mydomain].[myapplication],那么我会得到不同的结果。它确实在仿真程序中构建和运行,但大部分布局信息没有出现。左上角没有汉堡包菜单,页眉没有标题文本,右上角没有设置按钮,以前由Android Studio中的自动生成代码自动包含的值。我也无法使用setTitle在代码中设置标题。
但是,从左侧滑动确实会带来导航抽屉。
好吧,我意识到“类模型不存在”这件事是从何而来的。我不知道是责怪我自己的愚蠢,还是这种绑定在Android上实现的愚蠢挑剔的方式。包需要用小写“M”来称为models
,而不是models
。绑定自动名称转换的东西一定认为models
是一个类,而不是一个包。
要修复布局,必须将oncreate
方法更改为
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
dataModel = new DataModel();
cycleInformationBinding.setRecommendation(dataModel);
// set toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// Drawer layout setting
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
具体地说,事情必须按顺序发生:
SetContentView
到主活动任何其他顺序都会导致模型绑定失败或工具栏无法正确显示。
我正在开始使用特性。我正面临这方面的问题。
迁移到androidx后 我在编译时遇到问题 错误:找不到符号androidx。数据绑定。数据绑定组件 符号:类DataBindingComponent位置:包androidx。数据绑定 im使用的Gradle版本为5.4.1 注:androidx中的其他组件。数据绑定包工作正常。像DataBindingUtil 只有DataBindingComponent不工作
我下载了一个Android项目,但我得到了这个错误: 样品导入: 样品用法: 代码时没有错误,但在编译时我得到了我提到的错误。 当我尝试在Android Studio上进行定义时,我不能。 应用程序级生成。格拉德尔: 我试着清理和重建这个项目,但还没有成功。 谢谢你的帮助。
我是Android应用程序开发的新手,所以请耐心等待我。我正在编写一个应用程序,该应用程序从Google Play服务获取GPS位置,然后通过蓝牙广播数据。我有一个获取位置的位置活动,以及一个广播数据的 AdvertisingActivity。 我的问题是我很难理解Android应用程序中的文件结构,所以我怀疑我缺乏理解是我遇到错误的原因。 下面是位置活动的一个代码段,其中错误是: 为什么编译器找
这里有一个类似的答案:如何在Java中将函数作为参数传递? 但提供的正确答案不起作用。我有一门课: 在函数内部我试图将传递到,但我得到的错误是: 找不到符号 符号:类Callable 我不知道为什么。 另外,我尝试使用返回类型字符串作为xMethod,您能传递一个返回类型不同的函数吗?
我对kotlin相对较新,并试图在一些片段中构建一个带有数据绑定的项目。我有一个名为UserFraank的片段,其中包含一个Recyclview,如下所示: 以及用户的xml布局文件片段。xml如下所示: 还有一个类似的适配器类和item_user.xml: item-user.xml: 请注意,gradle中已经启用了数据绑定,这里非常重要的问题是,在我的片段和适配器中,这一行: 报告类型不匹配