Java – Why can’t MainActivity parse or is not a field?

Why can’t MainActivity parse or is not a field?… here is a solution to the problem.

Why can’t MainActivity parse or is not a field?

I

have a small project and I need to play with the battery of my Android device. At first, I wanted to be able to print the battery, so I used this tutorial .

I then created a new Android project called “Testing” in Eclipse and put the following code in MainActivity.java

package com.example.testing;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Toast;
import android.R.*;

public class MainActivity extends Activity {  
     TextView mTextView;  
     @Override  
     protected void onCreate(Bundle savedInstanceState) {  
          super.onCreate(savedInstanceState);  
          setContentView(R.layout.MainActivity); This is the MainActivity that contains the error
          mTextView = (TextView) findViewById(R.id.batterTest);  
          findViewById(R.id.getBattery).setOnClickListener(new OnClickListener() {  
               @Override  
               public void onClick(View v) {  
                    mTextView.setText(String.valueOf(batteryLevel));  
               }  
          });  
          new Thread(new ThreadM()).start();  
     }  
     @Override  
     protected void onDestroy() {  
          super.onDestroy();  
          unregisterReceiver(mArrow);  
     }  
     BatteryReceiver mArrow;  
     private class ThreadM implements Runnable {  
          @Override  
          public void run() {  
               mArrow = new BatteryReceiver();  
               IntentFilter mIntentFilter = new IntentFilter();  
               mIntentFilter.addAction(Intent.ACTION_BATTERY_LOW);  
               mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);  
               mIntentFilter.addAction(Intent.ACTION_BATTERY_OKAY);  
               Intent batteryIntent = registerReceiver(mArrow, mIntentFilter);  
               batteryLevel = getBatteryLevel(batteryIntent);  
               Log.e("Battery Level", String.valueOf(batteryLevel));  
          }  
     }  
     float batteryLevel;  
     private class BatteryReceiver extends BroadcastReceiver {  
          @Override  
          public void onReceive(Context arg0, Intent arg1) {  
               if (arg1.getAction().equalsIgnoreCase(Intent.ACTION_BATTERY_LOW)  || arg1.getAction().equalsIgnoreCase(Intent.ACTION_BATTERY_CHANGED) || arg1.getAction().equalsIgnoreCase( Intent.ACTION_BATTERY_OKAY)) {  
                    int level = arg1.getIntExtra("level", 0);  
                    Toast.makeText(MainActivity.this,"Current Battery " + level + " %", Toast.LENGTH_LONG).show();  
                    mTextView.setText(String.valueOf("Battery Level Change Detect through Receiver = " + level));  
               }  
          }
     }  
     public float getBatteryLevel(Intent batteryIntent) {  
          int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);  
          int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);  
          if (level == -1 || scale == -1) {  
               return 50.0f;  
          }  
          return ((float) level / (float) scale) * 100.0f;  
     }  
}

In fact, this should just be running a simple activity with the battery level displayed on the screen. But this is not because of a single mistake. “MainActivity cannot be parsed or is not a field” (see comment line).
You know why? I want this code to work so I can continue.

Thank you.

Solution

You need to change

 setContentView(R.layout.MainActivity); 

to

 setContentView(R.layout.activity_main); 

Suppose you have a layout named activity_main.xml instead of MainActivity, which is actually the name of your Activity class

and delete

 import android.R.*;

and import

 import com.example.testing.R;

Related Problems and Solutions