Difficulties with android on click listener - android

firstly I have to write that I have just started my adventure with android, I'm building simple menu and as far as I have about and exit button working :), I've tried with start button but it doesn't listen at all, If You have any suggestions what to do with it I would more than happy :)
main activity:
public class MainActivity extends Activity implements OnClickListener
{
#Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View startButton = findViewById(R.id.start_button);
startButton.setOnClickListener(this);
View whereButton = findViewById(R.id.where_button);
whereButton.setOnClickListener(this);
View aboutButton = findViewById(R.id.about_button);
aboutButton.setOnClickListener(this);
View exitButton = findViewById(R.id.exit_button);
exitButton.setOnClickListener(this);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.about_button:
Intent i = new Intent(this, About.class);
startActivity(i);
break;
case R.id.exit_button:
finish();
break;
case R.id.start_button:
i = new Intent(this, Start.class);
startActivity(i);
break;
}
}
Strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">City Inspector</string>
<string name="main_title">Ldz Inspector</string>
<string name="start_title">Profile</string>
<string name="start_label">START</string>
<string name="where_label">WHERE AM I?</string>
<string name="option_label">OPTIONS</string>
<string name="about_label">ABOUT</string>
<string name="create_label">CREATE PROFILE</string>
<string name="browse_label">BROWSE MAP</string>
<string name="exit_label">EXIT</string>
<string name="about_text">\
about program things
</string>
</resources>
start.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start);
}
}
start.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#color/background"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:padding="20dip"
android:orientation="horizontal" >
<LinearLayout
android:orientation="vertical"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_gravity="center" >
<TextView
android:text="#string/start_title"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="25dip"
android:textSize="24.5sp" />
<Button
android:id="#+id/Create_Profile"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="#string/create_label" />
<Button
android:id="#+id/Browse_Map"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="#string/browse_label" />
</LinearLayout>
</LinearLayout>
!!EDIT:
Sorry I knew I forgot to post something :), here is the AndroidManifest :)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="menu.dot"
android:versionCode="1"
android:versionName="1.0">
<application android:label="#string/app_name" android:icon="#drawable/icon">
<activity android:name="MainActivity"
android:label="#string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".About">
android:label="#string/about_title"
android:theme="#android:style/Theme.Dialog" >
</activity>
<activity android:name=".Exit">
andorid:label="#string/exit_title">
</activity>
<activity android:name=".Start">
andorid:label="#string/start_title">
</activity>
/application>
</manifest>
Please check the start.xml edition
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#color/background"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:padding="20dip"
android:orientation="horizontal" >
<LinearLayout
android:orientation="vertical"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_gravity="center" >
<TextView
android:text="#string/main_title"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="25dip"
android:textSize="24.5sp" />
<Button
android:id="#+id/start_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="#string/start_label" />
<Button
android:id="#+id/where_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="#string/where_label" />
<Button
android:id="#+id/option_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="#string/option_label" />
<Button
android:id="#+id/about_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="#string/about_label" />
<Button
android:id="#+id/exit_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="#string/exit_label" />
</LinearLayout>
</LinearLayout>

In Android, you don't need to implement an onClickListener and check which button was clicked. Android offers you the neat way to specify the method used to handle the onClick-event by simply using the onClick-attribute for the button in your XML-Layout file.
Consider the following layout:
<Button android:id="#+id/some_button"
android:onClick="someButtonsAction"
android:layout_width="fill_parent"
android:layout_height="match_content"
/>
The Activity presenting this button will now need to have a method like this:
public void someButtonsAction(View v){
// Do your onClick stuff here
}
The supplied View v-argument is the clicked view itself. The whole thing is also illustrated in the docs on the top if the page.
This gives you the opportunity to make your code more readable and you don't need to get all the buttons from the layout, add them an onClickListener and decide which button was clicked (in the listener).

Do you register 'Start' activity in AndroidManifest.xml?
If you did not register activity in AndroidManifest.xml, you are not able to run the acticity.

Could you post your main.xml? I tried out your code making assumptions about what your main.xml looks like and start activity worked just fine (i.e., start layout displayed).

mainActivity.java
public class MainActivity extends Activity implements OnClickListener
{
#Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View startButton = findViewById(R.id.start_button);
startButton.setOnClickListener(this);
View whereButton = findViewById(R.id.where_button);
whereButton.setOnClickListener(this);
View aboutButton = findViewById(R.id.about_button);
aboutButton.setOnClickListener(this);
View exitButton = findViewById(R.id.exit_button);
exitButton.setOnClickListener(this);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.about_button:
Intent i = new Intent(this, About.class);
startActivity(i);
break;
case R.id.exit_button:
finish();
break;
}
}
public void StartCl(View v){
Intent idd = new Intent(this,Start.class);
startActivity(idd);
}
}
Main.xml
<Button
android:id="#+id/start_button"
android:onClick="StartCl"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="#string/start_label" />

Related

Error "unable to find explicit activity class" when starting new Activity

I'm trying to start a activity from another activity. Finally, it doesn't work and fails with error of "Unable to find explicit activity class". So far, i was trying to find out a solution from previous questions but i was unable to find out a correct answer for my question.
This is my code,
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="com.example.acer.explicitintent.MainActivity">
<Button
android:id="#+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</LinearLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
Button btn;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn =(Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this,ActivityTwo.class);
i.putExtra("value","chanuka");
startActivity(i);
}
});
}
}
activity_two.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="#+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView" />
</LinearLayout>
ActivityTwo.java
public class ActivityTwo extends AppCompatActivity {
TextView textView;
#Override
protected void onCreate(#Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
textView = (TextView)findViewById(R.id.tv);
Bundle bundle = getIntent().getExtras();
textView.setText(bundle.getString("value"));
}
}
Any help is appreciated. I'm newly to android.
you have not defined your ActivityTwo inside your Manifest , thats why you are getting this error ,
define your ActivityTwo in your Manifest File.
Sample Code
<application
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="#mipmap/ic_launcher"
android:largeHeap="true"
android:supportsRtl="true"
android:theme="#style/AppTheme.NoActionBar">
<!-- Other code for your activities etc-->
<activity
android:name=".activity.ActivityTwo"
android:screenOrientation="portrait"
android:theme="#style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateHidden" />
</application>

The intent passing one data twice(actually should pass 2 data)

I'm new in android and I just write a test app that should take the texts of the two buttons & change the text of them to each other in the new activity with intent.
but when I run the app and click the first button, it goes to second activity and in the second activity it just showing only the text of that button I just clicked on for both 2 buttons! actually, it should change the text of buttons to each other.(I mean the text of button 1 should display in button 2 and vice versa)
I check every question about the intent here, but my case is waired!!! because it seems everything is right! also, I check the code many times, I don't realize what's wrong!!!!
Thanks.
Here is the code:
MainActivity
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
Button buttonone,buttontwo;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void changeText(View view){
buttonone=(Button) view;
buttontwo=(Button) view;
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("button1text",buttonone.getText().toString());
intent.putExtra("button2text",buttontwo.getText().toString());
startActivity(intent);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="#+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="#dimen/activity_vertical_margin"
android:paddingLeft="#dimen/activity_horizontal_margin"
android:paddingRight="#dimen/activity_horizontal_margin"
android:paddingTop="#dimen/activity_vertical_margin"
tools:context="com.example.myb.assignment.MainActivity">
<Button
android:text="One"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_marginStart="35dp"
android:layout_marginTop="46dp"
android:id="#+id/buttonone"
android:onClick="changeText"/>
<Button
android:text="Two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="59dp"
android:id="#+id/buttontwo"
android:onClick="changeText"
android:layout_alignBaseline="#+id/buttonone"
android:layout_alignBottom="#+id/buttonone"
android:layout_alignParentEnd="true" />
</RelativeLayout>
SecondActivity
public class SecondActivity extends Activity {
Button button1,button2;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
#Override
public void onResume(){
super.onResume();
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
String intentData1=getIntent().getExtras().getString("button1text");
String intentData2=getIntent().getExtras().getString("button2text");
button1.setText(intentData2);
button2.setText(intentData1);
}
}
activity_second.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:text=""
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="#+id/button1"
android:layout_alignParentEnd="true"
android:layout_marginEnd="59dp"
android:id="#+id/button2"
/>
<Button
android:text=""
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="34dp"
android:layout_marginTop="46dp"
android:id="#+id/button1"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
AndroidManifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myb.assignment">
<application
android:allowBackup="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:supportsRtl="true"
android:theme="#style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity"> </activity>
</application>
</manifest>
In your MainActivity, in changeText(),
buttonone=(Button) view;
buttontwo=(Button) view;
These two lines assign the same button view, to both the buttons.
Insted of this, I recommend doing the following in your onCreate() method after setContentView();
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
And remove those two lines in changeText().

My application will not display anything? just a blank white page?

I made an app it was working perfectly I also had a imageview with scrolling pictures.
All I did was add a button and after that when I run it the app will not show anything. just a plain white blank screen. I have a feeling it could be an intent issue but they seem to be fine with no errors.
Like I said the intents were working fine. I've checked every bit of my code but doesn't seem to load up my Main activity layout.(xml)
Unfortunately I didn't keep a backup . Also LogCat Doest not say anything whatsoever
`
<TextView
android:id="#+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="Welcome to iStyle Events"
android:textColor="#FF9500"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="#+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#+id/textView1"
android:layout_centerHorizontal="true"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall" />
<LinearLayout
android:id="#+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" >
<Button
android:id="#+id/Gallery"
style="?android:attr/buttonStyleSmall"
android:layout_width="88dp"
android:layout_height="wrap_content"
android:textColor="#FF9500"
android:text="#string/Gallery" />
</LinearLayout>
<TextView
android:id="#+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#+id/textView2"
android:layout_centerHorizontal="true"
android:textColor="#fafad2"
android:text="hello"
android:textAppearance="?android:attr/textAppearanceSmall" />
<Button
android:id="#+id/Services"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="#+id/textView1"
android:layout_alignTop="#+id/linearLayout1"
android:layout_toLeftOf="#+id/linearLayout1"
android:textColor="#FF9500"
android:text="#string/Services" />
<Button
android:id="#+id/Contact"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="#+id/textView1"
android:layout_alignTop="#+id/linearLayout1"
android:layout_toRightOf="#+id/linearLayout1"
android:textColor="#FF9500"
android:text="#string/Contact" />
`
.java =
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Main extends Activity {
Button service;
Button gallery;
Button contact;
protected void onCreate1(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
service = (Button)findViewById(R.id.Services);
service.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v)
{
Intent intent = new Intent (Main.this, servicesActivity.class);
startActivity(intent);
}
});
gallery = (Button)findViewById(R.id.Gallery);
gallery.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v)
{
Intent intent1 = new Intent (Main.this, galleryActivity.class);
startActivity(intent1);
}
});
contact = (Button)findViewById(R.id.Contact);
contact.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v)
{
Intent intent2 = new Intent (Main.this, contactActivity.class);
startActivity(intent2);
}
});
}
}
Manifest file:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.istyleevents"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="1"
android:targetSdkVersion="16" />
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<activity
android:name="com.istyleevents.Main"
android:label="#string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="galleryActivity"></activity>
<activity android:name="servicesActivity"></activity>
<activity android:name="contactActivity"></activity>
</application>
</manifest>
You have a 1 behind the method onCreate. Is it just a copy-paste mistake ? If I remove it, you layout is shown
You have a typo on your onCreate method. It's written as onCreate1. If that's how it's written in the java file and not just a copt&paste error here, that may be your problem.
Check your android:layout_width and android:layout_height and make sure they are not cover other content is my guesss please post the xml file

Android eclipse. Error when running my application

I cant get my application to work, but theres no error message in the development.
Im trying to learn how to link my page to another page.
TMactivity page 1.
public class TmActivity extends Activity {
private ImageButton NewPage;
/** Called when the activity is first created. */
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
this.NewPage = (ImageButton)this.findViewById(R.id.widget38);
this.NewPage.setOnClickListener(new OnClickListener() {
public void onClick(View WebView) {
Intent i = new Intent(TmActivity.this, New.class);
startActivity(i);
}
});
}
}
// Page 2:
public class WebView extends Activity {
public class New extends Activity {
/** Called when the activity is first created. */
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web);
}
}
}
//first xml:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="#+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageButton
android:id="#+id/widget37"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:layout_x="4dp"
android:layout_y="387dp" />
<ImageButton
android:id="#+id/widget38"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="69dp"
android:layout_y="386dp" />
<ImageButton
android:id="#+id/widget39"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="151dp"
android:layout_y="386dp" />
<ImageButton
android:id="#+id/widget40"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="242dp"
android:layout_y="383dp" />
<TextView
android:id="#+id/widget43"
android:layout_width="wrap_content"
android:layout_height="47px"
android:background="#FF0000"
android:text="Teknikmagasinet"
android:textSize="20sp"
android:typeface="sans"
android:textStyle="bold"
android:textColor="#FFFF00"
android:layout_x="74dp"
android:layout_y="11dp" />
<TextView
android:id="#+id/widget44"
android:layout_width="203px"
android:layout_height="30px"
android:text="nyheter"
android:textColor="#FFFF00"
android:layout_x="34dp"
android:layout_y="77dp" />
<ImageView
android:id="#+id/widget45"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#ff33cc00"
android:layout_x="44dp"
android:layout_y="143dp" />
<TextView
android:id="#+id/widget46"
android:layout_width="wrap_content"
android:layout_height="47px"
android:background="#ffcc6600"
android:text=" emil bergstrlm han är kung "
android:hint="phuong"
android:layout_x="13dp"
android:layout_y="255dp" />
</AbsoluteLayout>
// second xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
package="tm.com"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="#string/hello"
/>
<ImageButton
android:id="#+id/widget38"
android:layout_width="150dp"
android:layout_height="wrap_content" />
<Button
android:text="Second Page"
android:id="#+id/close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
</LinearLayout>
sting xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, TmActivity!</string>
<string name="app_name">Tm.com</string>
<string name="main_title">My Main Title</string>
</resources>
Thank you for any help!
//remove this life from your second activity
public class WebView extends Activity {
and register New in your manifest.xml
If I understand correctly, you're trying to open a new activity from an already running activity (Switching your page)? Try this.
Activity Main.java :
package tm.com
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class TmActivity extends Activity {
/** Called when the activity is first created. */
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button butn = (Button) findViewById(R.id.button1);
butn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(TmActivity.this, New.class);
startActivityForResult(intent, 0);
}
});
}
}
Layout Main.xml :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id="#+id/button1" android:text="name" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</RelativeLayout>
In Application Manifest : *Modify the manifest in the application bracket to look like this.
<application android:icon="#drawable/icon" android:label="#string/app_name">
<activity android:name=".TmActivity"
android:label="#string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".New"></activity>
</application>

Soundboard App force closes and I can't figure out why

So I've been working on a soundboard app for my kids. This is my first app so as you can imagine I very nearly have no idea what I'm doing (noob) so I'm apologizing in advance :-). I'm not sure where my problem is but my splash screen runs no problem but when it tries to load the next activity it force closes. i'm going to include my manifest the java file that is supposed to play the audio and the layout for the buttons which are clickable images. Thanks in advance! Also I would like to set it up where the buttons could play a random sound that relates to the image using soundpool but again with the noobness. I'm not really familiar at all with the errors but I'm seeing java.land.classcastexception: android.widget.imageview as the reason the mymenu activity isn't starting. Hope that helps.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.pnl.thebasics"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="#drawable/sssicon"
android:label="#string/app_name" >
<activity android:label="#string/app_name" android:name=".myMain">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:label="#string/app_name" android:name=".myMenu">
<intent-filter>
<action android:name="com.pnl.thebasics.CLEARSCREEN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
package com.pnl.thebasics;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
public class myMenu extends Activity {
#Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// Hide the title bar
requestWindowFeature(Window.FEATURE_NO_TITLE);
// Go full screen
final Window window = getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.menu);
//these are the buttons that play sounds
//button 1 (sponge bob)
final MediaPlayer mpButtonClick1 = MediaPlayer.create(this, R.raw.sb1);
Button bSpongebob = (Button) findViewById(R.id.sbbutton);
bSpongebob.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
mpButtonClick1.start();
}
});
//button 2 (patrick)
final MediaPlayer mpButtonClick2 = MediaPlayer.create(this, R.raw.pat1);
Button bPatrick = (Button) findViewById(R.id.patbutton);
bPatrick.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
mpButtonClick2.start();
}
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="#+id/LinearLayout01"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ImageView
android:id="#+id/sbbutton"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_weight="50"
android:clickable="true"
android:src="#drawable/sbbuttonimage" />
<ImageView
android:id="#+id/patbutton"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_weight="50"
android:clickable="true"
android:src="#drawable/patbuttonimage" />
</LinearLayout>
<LinearLayout
android:id="#+id/LinearLayout02"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="#+id/mrcrabsbutton"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_weight="50"
android:clickable="true"
android:src="#drawable/mrcrabsbuttonimage" />
<ImageView
android:id="#+id/squidwardbutton"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_weight="50"
android:clickable="true"
android:src="#drawable/squidwardbuttonimage" />
</LinearLayout>
<LinearLayout
android:id="#+id/LinearLayout03"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ImageView
android:id="#+id/planktonbutton"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_weight="50"
android:clickable="true"
android:src="#drawable/planktonbuttonimage" />
<ImageView
android:id="#+id/garybutton"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:layout_weight="50"
android:clickable="true"
android:src="#drawable/garybuttonimage" />
</LinearLayout>
</LinearLayout>
Your Java code is expecting to find a Button object in your layout:
Button bSpongebob = (Button) findViewById(R.id.sbbutton);
But your layout declares that widget to be an ImageView:
<ImageView
android:id="#+id/sbbutton"
An ImageView isn't a Button, and when your Java code tries to force it to be a Button you get the java.lang.ClassCastException.
Two choices to fix:
1) Change your Java code to use ImageView.
2) Change your layout to declare a Button.
Either will accept the click listener you're trying to set. Don't forget you need to make this fix for both widgets in your app.

Categories

Resources