OnClickListener() must override a superclass method? - android

With this code:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
. . .
Button buttonAuthorizeUsers = (Button) findViewById(R.id.buttonAuthorizeUsers);
buttonAuthorizeUsers.setOnClickListener(new OnClickListener() {
#Override
public void onClick(View v) {
Intent configure = new Intent(OnDemandAndAutomatic_Activity.this, Configure_Activity.class);
OnDemandAndAutomatic_Activity.this.startActivity(configure);
}
});
I'm getting:
The method onClick(View) of type new View.OnClickListener(){} must override a superclass method
It would seem that this problem is sometimes caused by a Project | Properties | Java Compiler being set to 1.5.
Although I'm virtually I'd had this problem before, and changed it to 1.6, somehow it WAS 1.5 again.
HOWEVER, that (changing it to 1.6) did not solve the problem. I'm still getting that same err msg, after cleaning, building, and F11ing...???

I would recommend that you uncheck "Enable project specific settings", click "Configure Workspace Settings..." and change "Compiler Compliance Level" to 1.6 or above. Otherwise you would have to specify it every time.
If you need a specific compliance level for a specific project, you need to verify every other project that need compliance level 1.6 or above is set to this.
After everything is correctly setup - clean projects and restart Eclipse. Eclipse can be such a bitch some times - this often solves problems for me.

Two things to consider:
1) Take a look at your imports - are you sure that View.OnClickListener is imported, but not lets say DialogInterface.OnClickListener
2) OnClickListener is actually an interface, that you are instantiating anonymously. So after all when writing the onClick method you are actually not overriding a super class method, but instead implementing an interface method. Annotating interface methods with #Override is a good practice, but this has been introduced in JDK 6, which means that by the time Android 1.5 or 1.6 was developed this may not has been yet introduced to the java language and hence making it an invalid syntax.

Right below the "Compiler Compliance Level", there are a few options grayed out if the "Use default compliance settings" checkbox is checked: Namely, "Generated .class files compatibility" and "Source compatibility". Verify that both of those are set to 1.6 - If not, either change the default compliance settings, or uncheck that box and tweak them directly.

Button buttonAuthorizeUsers = (Button) findViewById(R.id.buttonAuthorizeUsers);
buttonAuthorizeUsers.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
Intent configure = new Intent(OnDemandAndAutomatic_Activity.this,Configure_Activity.class);
OnDemandAndAutomatic_Activity.this.startActivity(configure);
}
});
try to replace this line
buttonAuthorizeUsers.setOnClickListener(new View.OnClickListener() {});
this error you got happened when your trying to assignee the On-click to unexpected type !
So, beleive me Eclipse IDE most of time will import DialogInterface instead of View so write it by your self.

daigoor is right. Eclipse always try to do this 'import android.content.DialogInterface.OnClickListener' instead of the doing this -> 'import android.view.View.OnClickListener'. That solves my problem.

Related

visual studio android import cant resolved after update

I updated Visual Studio, then my Android project had errors such as import could not be resolved. It could not be resolved to a text type. The type could not be resolved. Then I created a new project with the same settings. However, it had the same errors. It does not work because of the code, but maybe it knows who knows the code here.
package com.Android2;
import android.app.Activity;
import android.widget.TextView;
import android.os.Bundle;
public class Android2 extends Activity
{
/** Called when the activity is first created. */
#Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
/* Create a TextView and set its text to "Hello world" */
TextView tv = new TextView(this);
tv.setText("Hello World!");
setContentView(tv);
}
}
There is no problem with your code or imports...
I know it is hard work and a serious change when it comes to shortcuts, menus, overview, etc., but i would suggest to use android studio instead of visual studio if you only write android apps in java. I used visual studio too and switched to android studio.
Android Studio will give you more comfort than every other ide in programming android apps in java!
I know this problems you wrote about very well and had the same. Sry that this isnt a really answer of your problem and does not solves your concrete problem.
Tips for solving, you probably already know:
reboot your pc and visual studio if you not already did
delete caches or other from visual studio
rebuilt/clean your project
not easy, but reinstall visual studio
I hope i could help anyway!

Is Androids new Jack compiler really that slow?

On some of my Android projects I see that building got quite slow since using the new Jack compiler. I need it to use Java 8 features like lambdas.
But the long building time is a bit disturbing. So I set up a new Android project. It contains just a MainActivity with one button which reacts on your click.
package de.xappo.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
Button button;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(final View view) {
Toast.makeText(MainActivity.this, "Button clicked!", Toast.LENGTH_LONG).show();
}
});
}
}
There is nothing else except from the layout file which just contains a a TextView and a Button within a RelativeLayout.
As you can see in the picture all the jack gradle tasks together take about 75 seconds. Is this normal? This hole example app builds in less than 22 seconds without jack. So is this big difference normal?
I already managed Java heap size within my gradle.properties file:
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Is there still any thing to do to improve jack compiling performance? Or do you know about any updates planned on jack to improve building time?
As per this announcement, the Jack toolchain on Android is deprecated and java8 support will be directly integrated into Android's standard javac and dx toolchain. I switched to Jack for java8 support, but then transitioned to retrolambda because Jack was so slow.

Android activity & import issue

Trying out some android programming that has gone fine up until this point. I'm getting the following errors:
Activity cannot be resolved to a type
The import Activity cannot be resolved
on the top two imports (activity and bundle) of the following class:
package com.example.sqlite;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
public class Input extends Activity {
private EditText txtTitle;
private EditText txtURL;
private Button btnOK;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.input);
txtTitle = (EditText) findViewById(R.id.editText1);
txtURL = (EditText) findViewById(R.id.editText2);
btnOK = (Button) findViewById(R.id.button1);
}
}
I've done the standard ctrl + shift + O, which does automatically add these imports but the errors remain. I've also rebuilt it over and over with no effect.
Ca anyone see were I'm going wrong here?
Do right click on the project node in Eclipse and select Android Tools->Fix Project Properties. It looks like you are missing link to your Android libraries. Good way to check on that is to open properties-> Java build path -> Libraries and verify that Android link is there. If not - do Properties->Android and select project target you would like to use
You may occasionally see strange erros if any of your XML files fail to build. Check your console to see if any of your layout or resources have errors. Do the following:
Project > Clean
If this does not fix it, verify that pour souce actually exists in the project path:
com.example.sqlite
Check your manifest xml if the activity is included.. This can sometimes cause the error.

OnClickListener Error

I am new to Android and tried to run the sample code of the SDK using eclipse. I created the project (via File → New → Project → Android → Android Sample Project), but when I run the project it shows the following error for all the sample projects:
Multiple markers at this line
The method onClick(View) of type new View.OnClickListener(){} must override a superclass method
implements android.view.View.OnClickListener.onClick
Then I refered to this forum. Here they mentioned a "compiler compliance level". But my compiler compliance level is on 1.7, and I am using Android 4.0.3 with an API level of 15.
So please help me to rectify this error.
Make sure that above your OnClick method you have the annotation #Override like so
#Override
public void OnClick(View v) {
//Code goes here
}
By having #Override, Java knows that you are not creating a new method, in this situation you are letting Java know that you are utilizing that listener.
If you have already done this, check this website http://androidcodemonkey.blogspot.com/2011/10/how-to-solve-must-override-superclass.html
Remove the #Override annotation tag.
For some situation. the eclipse can't recognize.
I just had the same issue.I fixed it by following change of code
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
Use View.OnClickListener(){} instead of just OnClickListener(){};
I think this might due to various OnClickListener are there. May be we need to specify which is the relevant one. I would really love to know the real reason if any one knows.

Missing Something Easy (Button OnClick Causing Null Pointer)

Suddenly my buttons cause null pointer exceptions. I have not changed any code in this activity class. I have been up most of the weekend trying to pin this down. I get null pointer exceptions in both the emulator and on device.
This is a simple screen with buttons. I could easily scrap this and write new code, but would like to know what has caused this issue. If not, I will just write new code.
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
Button b1 = (Button) findViewById(R.id.MainActBtn);
b1.setOnClickListener(new View.OnClickListener() { //Error is here
public void onClick(View v) {
Intent intent = new Intent(StartScreen.this, MainActivity.class);
startActivity(intent);
}
});
Any help?
Try a fresh clean and build of your project. I got this error too in the past, caused by a changed R.class Resource class, but the static references in the using classes weren't properly replaced by the incremental java compiler, so the resources are no longer found.
I think You are not getting Null Pointer Exception because of the Button click just because of the declaration of the button..
You can check before writting the onClickListener..
if(b1==null)
Log.i("Null","Null");
The Problem is may be in setting the XML view or also check the button you are using is defined in the same xml you are using in setContentView.
After this all, also Clean and Build your project.

Categories

Resources