Java 无法将ParseApplication强制转换为MainActivity
所以我试图将对象保存到Parse.com服务器。但是我得到了11-29 09:05:34.265 23256-23256/ionictech.com.hipku E/AndroidRuntime﹕ 致命异常:main java.lang.ClassCastException:Ionitech.com.hipku.ParseApplication无法强制转换到Ionitech.com.hipku.Content.MainActivity上的Ionitech.com.hipku.Content.UploadActivity$2.onClick(UploadActivity.java:196)logcat错误。 每次我按下保存按钮,错误就会弹出。我猜我没选对有人知道另一种方法来选应用程序吗 这是我的密码:Java 无法将ParseApplication强制转换为MainActivity,java,android,android-activity,parse-platform,logcat,Java,Android,Android Activity,Parse Platform,Logcat,所以我试图将对象保存到Parse.com服务器。但是我得到了11-29 09:05:34.265 23256-23256/ionictech.com.hipku E/AndroidRuntime﹕ 致命异常:main java.lang.ClassCastException:Ionitech.com.hipku.ParseApplication无法强制转换到Ionitech.com.hipku.Content.MainActivity上的Ionitech.com.hipku.Content.Up
@Override
public void onClick(View v) {
Ads ads = ((MainActivity) getApplicationContext ()).getCurrentAds ();
//When user hit the save buttton.
//add data to ads object.
ads.setTitle (adTitle.getText ().toString ());
ads.setMessage (adMessage.getText ().toString ());
//associate ad with the user
ads.setUser (ParseUser.getCurrentUser ());
//The multimedia will be saved in the actionbar method
//Saves all data to Parse.com
ads.saveInBackground (new SaveCallback () {
@Override
public void done(ParseException e) {
if (e == null) {
(UploadActivity.this).setResult (Activity.RESULT_OK);
(UploadActivity.this).finish ();
} else {
Toast.makeText (UploadActivity.this, "Error saving", Toast.LENGTH_SHORT
)
.show ();
}
}
});
这是我的主要活动代码:
public class MainActivity extends ActionBarActivity {
DrawerLayout mDrawerLayout;
ListView mDrawerList;
ActionBarDrawerToggle mDrawerToggle;
String mTitle;
ActionBar ab;
protected Ads ads;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.layout);
ads = new Ads ();
ab = getSupportActionBar ();
ab.setBackgroundDrawable (new ColorDrawable (Color.parseColor ("#ff9900")));
FragmentTransaction ft = getFragmentManager ().beginTransaction();
ft.replace (R.id.content_frame, new ContentFeed ());
ft.commit ();
mTitle = (String) getTitle ();
mDrawerLayout = (DrawerLayout) findViewById (R.id.drawer_layout);
mDrawerList = (ListView) findViewById (R.id.drawer_list);
mDrawerToggle = new ActionBarDrawerToggle (this, mDrawerLayout,
R.string.drawer_open, R.string.drawer_close) {
@Override
public void onDrawerClosed(View drawerView) {
getSupportActionBar ().setTitle (mTitle);
invalidateOptionsMenu ();
}
@Override
public void onDrawerOpened(View drawerView) {
getSupportActionBar ().setTitle ("Select a tab");
invalidateOptionsMenu ();
}
};
mDrawerLayout.setDrawerListener (mDrawerToggle);
ArrayAdapter<String> adapter = new ArrayAdapter<String> (getBaseContext (),
R.layout.drawer_list_item, getResources ().getStringArray (R.array.resources));
mDrawerList.setAdapter (adapter);
getSupportActionBar ().setHomeButtonEnabled (true);
getSupportActionBar ().setDisplayHomeAsUpEnabled (true);
mDrawerList.setOnItemClickListener (new AdapterView.OnItemClickListener () {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Fragment fragment ;
String[] resources = getResources ().getStringArray (R.array.resources);
mTitle = resources[position];
ListDrawerFragment rFragment = new ListDrawerFragment ();
Bundle data = new Bundle ();
data.putInt ("position", position);
rFragment.setArguments (data);
FragmentManager fragmentManager = getFragmentManager ();
boolean addToBackStack = true;
fragment = null;
switch (position)
{
case 0:
fragment = new ContentFeed ();
break;
case 1:
Intent intent = new Intent (MainActivity.this, LoginActivity.class);
startActivity (intent);
finish ();
break;
}
if (fragment != null) {
FragmentTransaction ft = fragmentManager.beginTransaction ();
ft.replace (R.id.content_frame, fragment);
if (addToBackStack == true) {
ft.addToBackStack (null);
}
ft.commit ();
mDrawerLayout.closeDrawer (mDrawerList);
}
}
});
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate (savedInstanceState);
mDrawerToggle.syncState ();
}
public boolean onCreateOptionsMenu(Menu menu) {
//Inflate the Menu, this will add items to the actionbar when present
getMenuInflater ().inflate (R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return mDrawerToggle.onOptionsItemSelected (item) ||
super.onOptionsItemSelected (item);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
boolean drawerOpen = mDrawerLayout.isDrawerOpen (mDrawerList);
menu.findItem (R.id.action_settings).setVisible (!drawerOpen);
return super.onPrepareOptionsMenu (menu);
}
public Ads getCurrentAds() {
return ads;
}
}
公共类MainActivity扩展了ActionBarActivity{
抽屉布局mDrawerLayout;
ListView mDrawerList;
ActionBarDrawerToggle mDrawerToggle;
字符串mTitle;
ActionBar ab;
受保护的广告;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
ads=新ads();
ab=getSupportActionBar();
ab.setBackgroundDrawable(新的彩色Drawable(Color.parseColor(#ff9900”));
FragmentTransaction ft=getFragmentManager().beginTransaction();
ft.replace(R.id.content_框架,新ContentFeed());
ft.commit();
mTitle=(字符串)getTitle();
mDrawerLayout=(抽屉布局)findViewById(R.id.抽屉布局);
mDrawerList=(ListView)findViewById(R.id.drawer\u列表);
mDrawerToggle=新操作BarDrawerToggle(此,mDrawerLayout,
R.string.drawer\u打开,R.string.drawer\u关闭){
@凌驾
图纸上的公共空白已关闭(视图抽屉视图){
getSupportActionBar().setTitle(mTitle);
失效操作菜单();
}
@凌驾
打开图纸上的公共空白(视图抽屉视图){
getSupportActionBar().setTitle(“选择选项卡”);
失效操作菜单();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
ArrayAdapter=新的ArrayAdapter(getBaseContext(),
R.layout.drawer_列表_项,getResources().getStringArray(R.array.resources));
mDrawerList.setAdapter(适配器);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mDrawerList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
片段;
String[]resources=getResources().getStringArray(R.array.resources);
mTitle=资源[职位];
ListDrawerFragment rFragment=新的ListDrawerFragment();
Bundle data=新Bundle();
data.putInt(“位置”,位置);
rFragment.setArguments(数据);
FragmentManager FragmentManager=getFragmentManager();
布尔addToBackStack=true;
片段=空;
开关(位置)
{
案例0:
fragment=newcontentfeed();
打破
案例1:
意向意向=新意向(MainActivity.this、LoginActivity.class);
星触觉(意向);
完成();
打破
}
if(片段!=null){
FragmentTransaction ft=fragmentManager.beginTransaction();
ft.replace(R.id.content\u frame,fragment);
if(addToBackStack==true){
ft.addToBackStack(空);
}
ft.commit();
mDrawerLayout.closeDrawer(mDrawerList);
}
}
});
}
@凌驾
后期创建时受保护的空(捆绑包savedInstanceState){
super.onpostreate(savedInstanceState);
mDrawerToggle.syncState();
}
公共布尔onCreateOptions菜单(菜单){
//为菜单充气,这将在出现时向操作栏添加项目
getMenuInflater().充气(R.menu.menu\u主菜单,菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
返回MDRAWERTOGLE.onOptionsItemSelected(项目)||
super.onOptionsItemSelected(项目);
}
@凌驾
公共布尔值OnPrepareOptions菜单(菜单){
布尔DrawerLayout=mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action\u设置).setVisible(!drawerropen);
返回super.onPrepareOptions菜单(菜单);
}
公共广告{
返回广告;
}
}
getApplicationContext()
方法返回一个Application
对象,但您正试图将其强制转换为MainActivity
对象。那是错误的方式。如果你想让你的广告在应用程序中随处可见,你应该将你的getCurrentAds()
方法移动到你的自定义应用程序
类中。(我看到这是一个应用程序)