Reputation: 8607
I'm testing out a new layout and I need to show a new layout when a button is clicked from MainActivity. I've Googled and tried every answer, however, every piece of code ends up causing the app to crash. Currently, I'm experiencing an issue where it cannot resolve symbol view
.
Any thoughts? Your help is much appreciated. Here's my code:
package com.example.consumer.example;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.content.Intent;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.next);
button.setOnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
};
};
}
}
My crash log is the following (from Logcat):
01-09 21:40:40.787 7001-7001/? E/android.os.Debug: failed to load memtrack module: -2
01-09 21:40:40.847 7006-7006/? E/memtrack: Couldn't load memtrack module (No such file or directory)
01-09 21:40:40.847 7006-7006/? E/android.os.Debug: failed to load memtrack module: -2
01-09 21:40:41.196 7022-7022/? E/memtrack: Couldn't load memtrack module (No such file or directory)
01-09 21:40:41.196 7022-7022/? E/android.os.Debug: failed to load memtrack module: -2
01-09 21:41:04.597 6950-6965/? E/EGL_emulation: tid 6965: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH)
01-09 21:41:04.620 6950-6950/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.surrrge.consumer.surrrge, PID: 6950
java.lang.RuntimeException: Canvas: trying to draw too large(110327008bytes) bitmap.
at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260)
at android.graphics.Canvas.drawBitmap(Canvas.java:1415)
at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:545)
at android.view.View.getDrawableRenderNode(View.java:17314)
at android.view.View.drawBackground(View.java:17250)
at android.view.View.draw(View.java:17062)
at android.view.View.updateDisplayListIfDirty(View.java:16053)
at android.view.View.draw(View.java:16837)
at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
at android.view.View.updateDisplayListIfDirty(View.java:16048)
at android.view.View.draw(View.java:16837)
at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
at android.view.View.updateDisplayListIfDirty(View.java:16048)
at android.view.View.draw(View.java:16837)
at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
at android.view.View.updateDisplayListIfDirty(View.java:16048)
at android.view.View.draw(View.java:16837)
at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
at android.view.View.updateDisplayListIfDirty(View.java:16048)
at android.view.View.draw(View.java:16837)
at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
at android.view.View.draw(View.java:17074)
at com.android.internal.policy.DecorView.draw(DecorView.java:751)
at android.view.View.updateDisplayListIfDirty(View.java:16053)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:656)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:662)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:770)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2796)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2604)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2211)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6301)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
at android.view.Choreographer.doCallbacks(Choreographer.java:683)
at android.view.Choreographer.doFrame(Choreographer.java:619)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
01-09 21:41:05.021 1519-4976/system_process E/EGL_emulation: tid 4976: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH)
01-09 21:41:05.421 1994-2204/com.android.launcher3 E/EGL_emulation: tid 2204: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH)
01-09 21:42:46.053 1519-1875/system_process E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 104)
01-09 21:42:46.059 1519-1875/system_process E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 108)
Upvotes: 0
Views: 136
Reputation: 2826
To display big images you need an image loading library. You can try these ones:
Glide
Picasso
They are pretty easy to use and work flawlessly.
Upvotes: 0
Reputation: 1464
Try to comment everything in your DisplayListCanvas.java and see if the error still exist.
Upvotes: 0
Reputation: 284
Try it like this and on adding View.OnclickListner implements methods so the public void Onclick method is created and use your intent inside it or you can do as Ahmed said.
package com.example.consumer.example;
//your imports here
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.next);
button.setOnClickListener(this);
}
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
}
}
Upvotes: 0
Reputation: 1077
You are missing the new OnClickListener
, it should be like this example :
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
}
});
Upvotes: 1