如何在Android Studio

时间:2015-12-05 13:18:33

标签: android android-studio intellij-idea

当我使用带有ViewStub的android数据绑定框架时,​​我有一些代码片段。

ItemPostBinding binding=ItemPostBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
final Post post = mDataset.get(position);
binding.stub.getViewStub().setLayoutResource(App.getPostExtensionManager().getLayout(post.getExtension()));

编译代码时,我知道binding.stub将被ViewStubProxy替换。但是我怎么能在编译之前让Android Studio忽略这里的错误?

(错误是Android Studio无法解决ViewStub类的getViewStub()方法)

更新1

我不知道这是否是由于我使用Android数据绑定框架的旧方法。

classpath 'com.android.databinding:dataBinder:1.0-rc4' // project build.gradle
apply plugin: 'com.android.databinding' // module build.gradle

但是使用official data-binding guide中提到的新方法,您只需在模块的build.gradle文件中添加以下设置。

android {
    ....
    dataBinding {
        enabled = true
    }
}

上面提到的错误检查已经消失,您甚至可以直接使用binding.stub而没有任何问题。

binding.stub.setLayoutResource(...)
binding.stub.inflate()
...

更新2

您可以直接使用binding.stub.someViewStubMethod(),但在编译时会失败。您仍然需要使用binding.stub.getViewStub().someMethod()。但是,就在最近,无论采用哪种方法将数据绑定添加到项目中,错误检查都会以某种方式消失。

2 个答案:

答案 0 :(得分:1)

您不应该以这种方式调用getViewStub方法。 binding.stub已经是您在布局item_post中放置的ViewStub。你应该致电binding.stub.setLayoutResource()

答案 1 :(得分:0)

Android Studio无法正确识别ViewStubProxy。只需在操纵之前施放它。

<plist version="1.0">
<dict>
……..
  <key>NSAppTransportSecurity</key>
  <dict>
      <key>Allow Arbitrary Loads</key>
     <true/>
 </dict>
 ……..
  </dict>
  </plist>

错误消失了:)