Having A Classcast Exception In Android While Using Myapplication Class
What i am doing:: I am trying to use Myapplication class to send the data to next activity Problem i am facing:: Having class cast exception BLD_IndividualListOfItems_Starters.jav
Solution 1:
Move the attribute
android:name="com.android.app.MyApplication"
to the first application
element in the manifest and delete the second application
element.
Btw. is your MyApplication
class really in the package com.android.app
?
EDIT: you use a different package, so the line should be
android:name="com.example.multitabcheckboxselection.MyApplication"
EDIT2+3: you have put it as an activity now. remove the activity, the attribute must go into the application
tag.
<?xml version="1.0" encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.example.multitabcheckboxselection"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="18" /><uses-permissionandroid:name="android.permission.INTERNET" /><applicationandroid:name="com.example.multitabcheckboxselection.MyApplication"android:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.multitabcheckboxselection.BreakfastLunchDinnerIndividualListOfItems"android:label="@string/app_name" ><intent-filter><actionandroid:name="android.intent.action.MAIN" /><categoryandroid:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name="com.example.multitabcheckboxselection.BLD_IndividualListOfItems_Starters" /><activityandroid:name="com.example.multitabcheckboxselection.BLD_IndividualListOfItems_MainCourse" /><activityandroid:name="com.example.multitabcheckboxselection.BLD_IndividualListOfItems_SideCourse" /><activityandroid:name="com.example.multitabcheckboxselection.BLD_IndividualListOfItems_Others" /><activityandroid:name="com.example.multitabcheckboxselection.BLD_IndividualListOfItems_Desert" /><activityandroid:name="com.example.multitabcheckboxselection.ResultActivity" /></application></manifest>
Solution 2:
Normally one would do like this
classMyApplicationextendsApplication {
@OverridepublicvoidonCreate() {
super.onCreate();
mInstance = this;
}
staticpublicMyApplicationgetInstance() { return mInstance; }
staticprivateMyApplication mInstance;
}
Then from elsewhere
MyApplicationmyApp= MyApplication.getInstance();
Solution 3:
Change
mApplication = (MyApplication)getApplication();
To
mApplication = ((MyApplication) getApplicationContext());
And in Manifest.xml define android:name="MyApplication"
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:name="MyApplication" >
Edit
Remove this
<applicationandroid:name="com.android.app.MyApplication"android:icon="@drawable/ic_launcher"android:label="@string/app_name" ></application>
Each application will have only one <application>
Tag
Solution 4:
Change to
mApplication = (MyApplication)getApplicationContext();
Edit:
Delete the second application tag and move this to the first
android:name="com.android.app.MyApplication"
Edit:
publicclassMyApplicationextendsApplication {
privatestaticMyApplication singleton;
publicMyApplicationgetInstance(){
return singleton;
}
publicvoidonCreate() {
super.onCreate();
singleton = this;
}
// other methods
}
Then in Activity
mApplication = MyApplication.getInstance();
Example:
publicclassMainextendsActivity{
ArrayList<HashMap<String,String>> arraylist = newArrayList<HashMap<String,String>>();
MyApplication mapp;
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapp = MyApplication.getInstance();
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText("My String from Application class is"+mapp.hello);
for(int i=0;i<10;i++)
{
HashMap<String,String> map = newHashMap<String,String>();
map.put("key", "value"+i);
arraylist.add(map);
}
mapp.setArrayListMapData(arraylist);
Button b = (Button) findViewById(R.id.button1);
b.setOnClickListener(newOnClickListener()
{
@OverridepublicvoidonClick(View v) {
// TODO Auto-generated method stubstartActivity(newIntent(Main.this,MainActivity.class));
}
});
}
main.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" ><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="51dp"android:text="TextView" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:text="Button" /></RelativeLayout>
MainActivity
publicclassMainActivityextendsListActivity
{
ListView lstView;
ArrayList<HashMap<String,String>> arraylist;
@OverridepublicvoidonCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
MyApplication mApplication = MyApplication.getInstance();
Log.i("................",""+mApplication.hello);
lstView = getListView();
lstView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
arraylist= mApplication.getArrayListMapData();
String[] from = { "key" };
int[] to = { R.id.textView1 };
SimpleAdapter adapter= newSimpleAdapter(this, arraylist,R.layout.row, from, to);
setListAdapter(adapter);
}
}
MyApplication
publicclassMyApplicationextendsApplication {
ArrayList<HashMap<String, String>> arraylist;
privatestaticMyApplication instance = null;
publicString hello= "Hello global Application";
@OverridepublicvoidonCreate() {
super.onCreate();
}
publicstaticMyApplicationgetInstance() {
if(instance == null) {
instance = newMyApplication();
}
return instance;
}
publicvoidsetArrayListMapData(ArrayList<HashMap<String, String>> setData)
{
arraylist = setData;
}
publicArrayList<HashMap<String, String>> getArrayListMapData()
{
return arraylist;
}
}
Manifest file
<applicationandroid:allowBackup="true"android:name="com.example.testlistactivity.MyApplication"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.testlistactivity.Main"android:label="@string/app_name" ><intent-filter><actionandroid:name="android.intent.action.MAIN" /><categoryandroid:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name="com.example.testlistactivity.MainActivity"android:label="@string/app_name" ></activity></application>
Snap1
Snap2
Post a Comment for "Having A Classcast Exception In Android While Using Myapplication Class"