Android 无法在eclipse中使用API21启动新活动
登录后启动主活动时出现问题。如果我在genymotion API 19中运行应用程序,就可以了。但当我在genymotion API 21中运行应用程序时,它就停止工作了。它显示错误:Android 无法在eclipse中使用API21启动新活动,android,android-manifest,Android,Android Manifest,登录后启动主活动时出现问题。如果我在genymotion API 19中运行应用程序,就可以了。但当我在genymotion API 21中运行应用程序时,它就停止工作了。它显示错误: 04-07 00:21:40.776: E/AndroidRuntime(3227): FATAL EXCEPTION: main 04-07 00:21:40.776: E/AndroidRuntime(3227): Process: vae.vnsupermark.com, PID: 3227 04-07 0
04-07 00:21:40.776: E/AndroidRuntime(3227): FATAL EXCEPTION: main
04-07 00:21:40.776: E/AndroidRuntime(3227): Process: vae.vnsupermark.com, PID: 3227
04-07 00:21:40.776: E/AndroidRuntime(3227): java.lang.RuntimeException: Unable to start activity ComponentInfo{vae.vnsupermark.com/vae.vnsupermark.com.MainActivity}: java.lang.RuntimeException: Cannot make calls to a recycled instance!
04-07 00:21:40.776: E/AndroidRuntime(3227): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
04-07 00:21:40.776: E/AndroidRuntime(3227): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
04-07 00:21:40.776: E/AndroidRuntime(3227): at android.app.ActivityThread.access$800(ActivityThread.java:144)
04-07 00:21:40.776: E/AndroidRuntime(3227): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
04-07 00:21:40.776: E/AndroidRuntime(3227): at android.os.Handler.dispatchMessage(Handler.java:102)
04-07 00:21:40.776: E/AndroidRuntime(3227): at android.os.Looper.loop(Looper.java:135)
04-07 00:21:40.776: E/AndroidRuntime(3227): at android.app.ActivityThread.main(ActivityThread.java:5221)
04-07 00:21:40.776: E/AndroidRuntime(3227): at java.lang.reflect.Method.invoke(Native Method)
04-07 00:21:40.776: E/AndroidRuntime(3227): at java.lang.reflect.Method.invoke(Method.java:372)
04-07 00:21:40.776: E/AndroidRuntime(3227): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
04-07 00:21:40.776: E/AndroidRuntime(3227): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
04-07 00:21:40.776: E/AndroidRuntime(3227): Caused by: java.lang.RuntimeException: Cannot make calls to a recycled instance!
04-07 00:21:40.776: E/AndroidRuntime(3227): at android.content.res.TypedArray.getResourceId(TypedArray.java:694)
04-07 00:21:40.776: E/AndroidRuntime(3227): at vae.vnsupermark.com.MainActivity.onCreate(MainActivity.java:216)
04-07 00:21:40.776: E/AndroidRuntime(3227): at android.app.Activity.performCreate(Activity.java:5933)
04-07 00:21:40.776: E/AndroidRuntime(3227): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
04-07 00:21:40.776: E/AndroidRuntime(3227): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
04-07 00:21:40.776: E/AndroidRuntime(3227): ... 10 more
My AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="vae.vnsupermark.com"
android:versionCode="7"
android:versionName="1.0.3" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="21"
android:maxSdkVersion="22"
/>
<!-- for card.io card scanning -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- BLUETOOTH -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<!-- GCM -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!-- gps -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Creates a custom permission so only this app can receive its messages. -->
<permission
android:name="vae.vnsupermark.com.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="vae.vnsupermark.com.permission.C2D_MESSAGE" />
<!-- END GCM -->
<!-- for most things, including card.io & paypal -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application
android:name="vae.vnsupermark.config.ConfigApp"
android:configChanges="keyboardHidden|orientation|screenSize"
android:icon="@drawable/ic_app"
android:label="@string/app_name"
android:theme="@style/ThemeNoActionbar" >
<activity
android:name=".SplashActitvity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/ThemeNoActionbar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/CustomMainActionBarTheme"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".LoginActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"
android:theme="@style/ThemeNoActionbar" />
<activity
android:name="vae.vnsupermark.payment.OnepayCheckout"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/ThemeNoActionbar" />
<activity
android:name="vae.vnsupermark.payment.VtcpayCheckout"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/ThemeNoActionbar" />
<activity
android:name="vae.vnsupermark.payment.PaypalCheckout"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/ThemeNoActionbar" />
<!-- GCM -->
<receiver
android:name="vae.vnsupermark.notify.GcmReceiverVNSuper"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="vae.vnsupermark.notify" />
</intent-filter>
</receiver>
<service android:name="vae.vnsupermark.notify.GcmServiceVNSuper" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<!-- END GCM -->
<receiver android:name="vae.vnsupermark.notify.WelcomeReceiverVNSuper" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<!-- Error Reporter -->
<meta-data
android:name="de.quist.app.errorreporter.reportOnFroyo"
android:value="true" />
<meta-data
android:name="de.quist.app.errorreporter.targetUrl"
android:value="http://vnsupermark.com/android/report_error/log_error.php" />
<meta-data
android:name="de.quist.app.errorreporter.targetEmailSubject"
android:value="VNSuperMark Report Error" />
<meta-data
android:name="de.quist.app.errorreporter.targetEmailFrom"
android:value="VNSuperMark App Android" />
<service
android:name="de.quist.app.errorreporter.ExceptionReportService"
android:process=":exceptionReporter" />
<activity
android:name=".RegisterActivity"
android:label="@string/title_activity_register" >
</activity>
</application>
</manifest>
开展新活动
public void openMainActivity() {
//start main activity
Intent intentMain = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intentMain);
//destroy LoginActivity
exitLoginUI();
}
主要活动
ExceptionReporter.register(this); // report error if app get error
super.onCreate(savedInstanceState);
Utils.setDefaultFont(MainActivity.this); // set font for activity
setContentView(R.layout.activity_main);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
// create database
try {
Database.getInstances(MainActivity.this);
} catch (Exception e) {
}
// view menu
viewActionShopcart = getLayoutInflater().inflate(
R.layout.layout_action_shopcart, null);
tv_quantity_shopcart = (TextView) viewActionShopcart
.findViewById(R.id.tv_quantity_shopcart);
// layout left menu
leftMenu = (RelativeLayout) findViewById(R.id.left_menu);
drawerLayoutMenu = (DrawerLayout) findViewById(R.id.drawer_layout_menu);
drawerListMenu = (ListView) findViewById(R.id.list_menu);
headerAccountMenu = getLayoutInflater().inflate(
R.layout.header_account_menu, null);
tvNameUser = (TextView) headerAccountMenu
.findViewById(R.id.tv_name_user);
tvIdUser = (TextView) headerAccountMenu.findViewById(R.id.tv_id_user);
imageView = (ImageView) headerAccountMenu.findViewById(R.id.imageView1);
imageflag = (ImageView) headerAccountMenu.findViewById(R.id.imageflag);
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String urlRegister = getResources().getString(
R.string.Detailaccount);
// open browser to register page
Intent itRegister = new Intent(Intent.ACTION_VIEW, Uri
.parse(urlRegister));
startActivity(itRegister);
}
});
tvEmail = (TextView) headerAccountMenu.findViewById(R.id.tv_email_user);
lnUserInfo = (LinearLayout) headerAccountMenu
.findViewById(R.id.ln_user_info);
lnUserLogin = (LinearLayout) headerAccountMenu
.findViewById(R.id.ln_user_login);
lnRateApp = (LinearLayout) findViewById(R.id.ln_rate_app);
tvRate = (TextView) findViewById(R.id.tv_rate);
btnLogin = (Button) headerAccountMenu.findViewById(R.id.btn_login);
// show rate text
tvRate.setText(String.format(getResources()
.getString(R.string.rate_app), Utils.getVersion(
MainActivity.this, 1)));
// add header user info
drawerListMenu.addHeaderView(headerAccountMenu);
// button login when user logout
btnLogin.setOnClickListener(new LoginListener());
lnRateApp.setOnClickListener(new RateAppListenner());
// function loadgroup asynctask
titleActionbars = getResources().getStringArray(
R.array.title_actionbars2);
arrayListgroup = new ArrayList<String>();
displayView(1, null);
// new TaskRandomNotification(MainActivity.this).execute();
executeLoadProduct();
executeLoadProducterm();
arrayListgroup = TaskLoadProductGroup.getmenunamegroup();
arraylistgroupterm = TaskLoadProductGroupterm.getmenunamegroup();
// arrayListgroup.add("VCoin");
titleActionbars = getTitleActionbars();
titleActionbar = titleActionbars[0];
// icons from resources
iconMenus = getResources().obtainTypedArray(R.array.icon_menus);
// Recycle the typed array
iconMenus.recycle();
drawerListMenu.setOnItemClickListener(new SlideMenuClickListener());
// setting the nav drawer list adapter
drawerListItemMenu = new ArrayList<DrawerItemMenu>();
// add home menu
drawerListItemMenu.add(new DrawerItemMenu(titleActionbars[0], iconMenus
.getResourceId(4, -1), true));
for (int i = 5; i < titleActionbars.length; i++) {
// FPT GATE
drawerListItemMenu.add(new DrawerItemMenu(titleActionbars[i],
iconMenus.getResourceId(0, -1), true));
}
// add history order menu
drawerListItemMenu.add(new DrawerItemMenu(titleActionbars[1], iconMenus
.getResourceId(5, -1), true));
// add logout menu when user info is saved on device
drawerListItemMenu.add(new DrawerItemMenu(titleActionbars[4], iconMenus
.getResourceId(2, -1), true)); // logout
adapterMenu = new DrawerMenuAdapter(MainActivity.this,
drawerListItemMenu);
drawerListMenu.setAdapter(adapterMenu);
// enabling action bar app icon and behaving it as toggle button
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
titleMenu = getResources().getString(R.string.app_name);
actionBarDrawerToggle = new ActionBarDrawerToggle(this,
drawerLayoutMenu, R.drawable.ic_menu, R.string.app_name,
R.string.app_name) {
public void onDrawerClosed(View view) {
setTitle(titleActionbar);
// calling onPrepareOptionsMenu() to show action bar icons
supportInvalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
setTitle(titleMenu);
// calling onPrepareOptionsMenu() to hide action bar icons
supportInvalidateOptionsMenu();
}
};
// event toggle menu
drawerLayoutMenu.setDrawerListener(actionBarDrawerToggle);
// prepare info
prepareInfo();
//load image from url
GetXMLTask task = new GetXMLTask();
// Execute the task
task.execute(new String[] { URL });
if (savedInstanceState == null) {
// on first time display view for first nav item
displayView(1, null);
// Check device for Play Services APK. If check succeeds, proceed
// with GCM registration.
regIdGCM();
}
// reset quantity on action menu
resetTextQuantity();
ExceptionReporter.注册(此);//如果应用程序获取错误,则报告错误
super.onCreate(savedInstanceState);
Utils.setDefaultFont(MainActivity.this);//设置活动的字体
setContentView(R.layout.activity_main);
StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(策略);
//创建数据库
试一试{
Database.getInstances(MainActivity.this);
}捕获(例外e){
}
//查看菜单
viewActionShopcart=GetLayoutFlater()。充气(
R.layout.layou\u action\u shopcart,空);
电视\数量\购物车=(文本视图)查看操作购物车
.findViewById(R.id.tv\u数量\u购物车);
//布局左菜单
leftMenu=(RelativeLayout)findViewById(R.id.left_菜单);
抽屉布局菜单=(抽屉布局)findViewById(R.id.抽屉布局菜单);
抽屉列表=(列表视图)findViewById(R.id.list_菜单);
headerAccountMenu=GetLayoutFlater()。充气(
R.layout.header\u account\u菜单,空);
tvNameUser=(文本视图)标题帐户菜单
.findviewbyd(R.id.tv\u name\u user);
tvIdUser=(TextView)headerAccountMenu.findViewById(R.id.tv\u id\u user);
imageView=(imageView)headerAccountMenu.findViewById(R.id.imageView1);
imageflag=(ImageView)headerAccountMenu.findViewById(R.id.imageflag);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串urlRegister=getResources().getString(
R.string.Detailaccount);
//打开浏览器以注册页面
Intent itRegister=新的Intent(Intent.ACTION\u视图,Uri
.parse(urlsregister));
星触觉(itRegister);
}
});
tvEmail=(TextView)headerAccountMenu.findViewById(R.id.tv\u email\u user);
lnUserInfo=(LinearLayout)标题帐户菜单
.findViewById(R.id.ln\u用户信息);
lnUserLogin=(LinearLayout)标题帐户菜单
.findViewById(R.id.ln\u用户\u登录名);
lnRateApp=(线性布局)findViewById(R.id.ln\u rate\u app);
tvRate=(TextView)findViewById(R.id.tv_rate);
btnLogin=(按钮)headerAccountMenu.findViewById(R.id.btn\u登录);
//显示速率文本
setText(String.format(getResources())
.getString(R.string.rate_应用程序),Utils.getVersion(
main activity.this,1));
//添加标题用户信息
抽屉列表。添加HeaderView(HeaderAccount菜单);
//用户注销时的按钮登录
setOnClickListener(新的LoginListener());
setOnClickListener(新的RateApplListener());
//函数加载组异步任务
titleActionbars=getResources().getStringArray(
R.array.title_actionbars2);
ArrayList组=新的ArrayList();
显示视图(1,空);
//新建TaskRandomNotification(MainActivity.this).execute();
executeLoadProduct();
executeLoadProducterm();
arrayListgroup=TaskLoadProductGroup.getmenunamegroup();
arraylistgroupterm=TaskLoadProductGroupterm.getmenunamegroup();
//arrayListgroup.add(“VCoin”);
titleActionbars=getTitleActionbars();
titleActionbar=titleActionbars[0];
//资源中的图标
iconMenus=getResources().obtainTypedArray(R.array.icon_菜单);
//回收类型化数组
iconMenus.recycle();
DroperListMenu.setOnItemClickListener(新的SlideMenuClickListener());
//设置导航抽屉列表适配器
抽屉列表菜单=新的ArrayList();
//添加主菜单
抽屉列表菜单。添加(新的抽屉列表菜单(标题栏[0],图标菜单
.getResourceId(4,-1),true);
对于(int i=5;ipublic void openMainActivity() {
//start main activity
Intent intentMain = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intentMain);
//destroy LoginActivity
exitLoginUI();
}
ExceptionReporter.register(this); // report error if app get error
super.onCreate(savedInstanceState);
Utils.setDefaultFont(MainActivity.this); // set font for activity
setContentView(R.layout.activity_main);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
// create database
try {
Database.getInstances(MainActivity.this);
} catch (Exception e) {
}
// view menu
viewActionShopcart = getLayoutInflater().inflate(
R.layout.layout_action_shopcart, null);
tv_quantity_shopcart = (TextView) viewActionShopcart
.findViewById(R.id.tv_quantity_shopcart);
// layout left menu
leftMenu = (RelativeLayout) findViewById(R.id.left_menu);
drawerLayoutMenu = (DrawerLayout) findViewById(R.id.drawer_layout_menu);
drawerListMenu = (ListView) findViewById(R.id.list_menu);
headerAccountMenu = getLayoutInflater().inflate(
R.layout.header_account_menu, null);
tvNameUser = (TextView) headerAccountMenu
.findViewById(R.id.tv_name_user);
tvIdUser = (TextView) headerAccountMenu.findViewById(R.id.tv_id_user);
imageView = (ImageView) headerAccountMenu.findViewById(R.id.imageView1);
imageflag = (ImageView) headerAccountMenu.findViewById(R.id.imageflag);
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String urlRegister = getResources().getString(
R.string.Detailaccount);
// open browser to register page
Intent itRegister = new Intent(Intent.ACTION_VIEW, Uri
.parse(urlRegister));
startActivity(itRegister);
}
});
tvEmail = (TextView) headerAccountMenu.findViewById(R.id.tv_email_user);
lnUserInfo = (LinearLayout) headerAccountMenu
.findViewById(R.id.ln_user_info);
lnUserLogin = (LinearLayout) headerAccountMenu
.findViewById(R.id.ln_user_login);
lnRateApp = (LinearLayout) findViewById(R.id.ln_rate_app);
tvRate = (TextView) findViewById(R.id.tv_rate);
btnLogin = (Button) headerAccountMenu.findViewById(R.id.btn_login);
// show rate text
tvRate.setText(String.format(getResources()
.getString(R.string.rate_app), Utils.getVersion(
MainActivity.this, 1)));
// add header user info
drawerListMenu.addHeaderView(headerAccountMenu);
// button login when user logout
btnLogin.setOnClickListener(new LoginListener());
lnRateApp.setOnClickListener(new RateAppListenner());
// function loadgroup asynctask
titleActionbars = getResources().getStringArray(
R.array.title_actionbars2);
arrayListgroup = new ArrayList<String>();
displayView(1, null);
// new TaskRandomNotification(MainActivity.this).execute();
executeLoadProduct();
executeLoadProducterm();
arrayListgroup = TaskLoadProductGroup.getmenunamegroup();
arraylistgroupterm = TaskLoadProductGroupterm.getmenunamegroup();
// arrayListgroup.add("VCoin");
titleActionbars = getTitleActionbars();
titleActionbar = titleActionbars[0];
// icons from resources
iconMenus = getResources().obtainTypedArray(R.array.icon_menus);
// Recycle the typed array
iconMenus.recycle();
drawerListMenu.setOnItemClickListener(new SlideMenuClickListener());
// setting the nav drawer list adapter
drawerListItemMenu = new ArrayList<DrawerItemMenu>();
// add home menu
drawerListItemMenu.add(new DrawerItemMenu(titleActionbars[0], iconMenus
.getResourceId(4, -1), true));
for (int i = 5; i < titleActionbars.length; i++) {
// FPT GATE
drawerListItemMenu.add(new DrawerItemMenu(titleActionbars[i],
iconMenus.getResourceId(0, -1), true));
}
// add history order menu
drawerListItemMenu.add(new DrawerItemMenu(titleActionbars[1], iconMenus
.getResourceId(5, -1), true));
// add logout menu when user info is saved on device
drawerListItemMenu.add(new DrawerItemMenu(titleActionbars[4], iconMenus
.getResourceId(2, -1), true)); // logout
adapterMenu = new DrawerMenuAdapter(MainActivity.this,
drawerListItemMenu);
drawerListMenu.setAdapter(adapterMenu);
// enabling action bar app icon and behaving it as toggle button
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
titleMenu = getResources().getString(R.string.app_name);
actionBarDrawerToggle = new ActionBarDrawerToggle(this,
drawerLayoutMenu, R.drawable.ic_menu, R.string.app_name,
R.string.app_name) {
public void onDrawerClosed(View view) {
setTitle(titleActionbar);
// calling onPrepareOptionsMenu() to show action bar icons
supportInvalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
setTitle(titleMenu);
// calling onPrepareOptionsMenu() to hide action bar icons
supportInvalidateOptionsMenu();
}
};
// event toggle menu
drawerLayoutMenu.setDrawerListener(actionBarDrawerToggle);
// prepare info
prepareInfo();
//load image from url
GetXMLTask task = new GetXMLTask();
// Execute the task
task.execute(new String[] { URL });
if (savedInstanceState == null) {
// on first time display view for first nav item
displayView(1, null);
// Check device for Play Services APK. If check succeeds, proceed
// with GCM registration.
regIdGCM();
}
// reset quantity on action menu
resetTextQuantity();
iconMenus.recycle();