简体   繁体   中英

Error cannot resolve symbol activity_main in Android Studio

My error is: "cannot find symbol variable activity_main" How can solve it? This code is for change light of screen for android java code is I used different ways but I can't resolve it.

package com.example.lightbluered;

import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;

public class MainActivity extends AppCompatActivity {

    Button button;
    @Override
    protected void onCreate(Bundle
        savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  RelativeLayout bgElement = (RelativeLayout) findViewById(R.id.activity_main);
  bgElement.setBackgroundColor(Color.RED);
  myButtonListenerMethod();
      }
 public void myButtonListenerMethod() {
     button = (Button)findViewById(R.id.button);
     button.setOnClickListener(new
       View.OnClickListener() {
       @Override
   public void onClick(View v) {
     RelativeLayout bgElement =
   (RelativeLayout)findViewById(R.id.activity_main);
      int color = ((ColorDrawable)
      bgElement.getBackground()).getColor();
     if (color == Color.RED) {
      bgElement.setBackgroundColor(Color.BLUE);
      }
     else {
      bgElement.setBackgroundColor(Color.RED);
                 }
              }
          });
      }
}

and activity main XML code

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.532"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.524" />
</androidx.constraintlayout.widget.ConstraintLayout>

在此处输入图片说明 how can solve it?

Change your layout according to this:

<?xml version="1.0" encoding="utf-8"?>
<Relativelayout
  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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:id="@+id/relative"
>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.532"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.524" />
</Relativelayout>

Then Change this line

RelativeLayout bgElement = (RelativeLayout) findViewById(R.id.activity_main);

to

RelativeLayout bgElement = (RelativeLayout) findViewById(R.id.relative);

You don't need to define relativelayout again in the onclick method

In Your:

RelativeLayout bgElement = (RelativeLayout) findViewById(R.id.activity_main);

You are trying to refer R.id.activity_main which is no present in your layout XML file,

Try making your layout as:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

       <RelativeLayout
            android:id="@+id/activity_main"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.532"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.524" />

    </RelativeLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

Just changed the code like...

   package com.example.lightbluered;

import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;

public class MainActivity extends AppCompatActivity {

    Button button;
    @Override
    protected void onCreate(Bundle
        savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  ConstraintLayout bgElement = (ConstraintLayout ) findViewById(R.id.cl);
  bgElement.setBackgroundColor(Color.RED);
  myButtonListenerMethod();
      }
 public void myButtonListenerMethod() {
     button = (Button)findViewById(R.id.button);
     button.setOnClickListener(new
       View.OnClickListener() {
       @Override
   public void onClick(View v) {
     RelativeLayout bgElement =
   (RelativeLayout)findViewById(R.id.activity_main);
      int color = ((ColorDrawable)
      bgElement.getBackground()).getColor();
     if (color == Color.RED) {
      bgElement.setBackgroundColor(Color.BLUE);
      }
     else {
      bgElement.setBackgroundColor(Color.RED);
                 }
              }
          });
      }
}

And the xml

 <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    android:layout_width="match_parent"
    android:id="@+id/cl"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.532"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.524" />
</androidx.constraintlayout.widget.ConstraintLayout>

If you need to do what you need using ConstraintLayout you can use the following layout,

You just need to add id to your current layout. I named it as constraintLayout .

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    android:id="@id/constraintLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.532"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.524" />
</androidx.constraintlayout.widget.ConstraintLayout>

Then your code should be like this.

package com.example.lightbluered;

import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    Button button;
    ConstraintLayout bgElement;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button)findViewById(R.id.button);

        bgElement = (ConstraintLayout) findViewById(R.id.constraintLayout);
        bgElement.setBackgroundColor(Color.RED);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int color = ((ColorDrawable)
                bgElement.getBackground()).getColor();

                if (color == Color.RED) {
                    bgElement.setBackgroundColor(Color.BLUE);
                } else {
                    bgElement.setBackgroundColor(Color.RED);
                }
            }
        });
    }
}

But if you need to do this with the RelativeLayout , you can do that also.

Add RelativeLayout inside the ConstraintLayout . But it is up to you to choose. You can remove the ConstraintLayout and make it as RelativeLayout or just as the follows.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <RelativeLayout
        android:id="@+id/relativeLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.532"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.524" />
    </RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

Then your code should be like this.

package com.example.lightbluered;

import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;

public class MainActivity extends AppCompatActivity {
    Button button;
    RelativeLayout bgElement;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button)findViewById(R.id.button);

        bgElement = (RelativeLayout) findViewById(R.id.relativeLayout);
        bgElement.setBackgroundColor(Color.RED);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int color = ((ColorDrawable)
                bgElement.getBackground()).getColor();

                if (color == Color.RED) {
                    bgElement.setBackgroundColor(Color.BLUE);
                } else {
                    bgElement.setBackgroundColor(Color.RED);
                }
            }
        });
    }
}

you are initializing a view so you should use "R.id." and then add your view id also you did not define any RelativeLayout in your activity_main.xml to solve this problem change activity_main.xml content to this:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relative_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

</RelativeLayout>

and in MainActivity.java change RelativeLayout bgElement = (RelativeLayout) findViewById(R.id.activity_main); to RelativeLayout bgElement = (RelativeLayout) findViewById(R.id.relative_layout);

You have done only one mistake.. that is you are trying to use Relative layout which is not present in your xml file. now you can do 2 things, 1. change the Constraint layout to Relative layout in xml file. 2. change the Relative layout to Constraint layout in java file.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM