【问题标题】:Why my ActivityMainBinding is showing error?为什么我的 ActivityMainBinding 显示错误?
【发布时间】:2022-01-12 10:21:32
【问题描述】:

我正在使用绑定对象。我在主活动 xml 文件中的按钮 ID 是“按钮”,但在 java 类中,它在 binding.button 中的按钮上显示为红色

package com.example.admybrand_git_api;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.google.android.material.progressindicator.BaseProgressIndicator;

public class MainActivity extends AppCompatActivity {
    private ActivityMainBinding binding;

@Override
protected void onCreate(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    binding = ActivityMainBinding.inflate(inflater, container, false);
    binding.button.setOnClickListener(view->{
       Intent intent = new Intent(this,Git_Id_searchpage.class)
    });
    return binding.getroot();
}}

【问题讨论】:

  • 您是否尝试过清理和重建项目?绑定在gradle中是否有效?同时发布您的 xml 文件。
  • onCreate return type is void 你为什么要在这里返回视图?您还需要覆盖 onCreate 的另一个变体,它应该是 protected void onCreate(@Nullable Bundle savedInstanceState) ..

标签: android data-binding


【解决方案1】:

您没有添加必要的信息,所以让我们猜测一下。 检查是否:

  1. 您将此代码添加到 build.gradle

构建功能 { 视图绑定真 数据绑定真 }

  1. 在您的活动中添加了必要的导入

  2. 它与您的 XML 布局(不是 Activity 类)同名

  3. 你不需要

setContentView(R.layout.activity_main);

如果你使用 ViewBinding

【讨论】:

    【解决方案2】:

    如果您使用数据绑定,请确保您已正确实现它。 您的布局应以<layout> 开头,并以</layout> 结尾。

    <layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    
      <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:animateLayoutChanges="true"
         tools:context=".activities.MainActivity">
    
         <!--your activity code design -->
    
    
      </androidx.constraintlayout.widget.ConstraintLayout>
    </layout>
    

    而且你不需要setContentViewinfalteView 都为单一布局绑定你的布局与DataBindinngUtils

    MainActivity.class

    public class MainActivity extends BaseActivity  {
    
    ActivityMainBinding activityMainBinding;
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
    
          activityMainBinding.button.setOnClickListener(view-> {
           Intent intent = new Intent(this,Git_Id_searchpage.class)
          });
    
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 2022-06-13
      相关资源
      最近更新 更多