我面临一个非常奇怪的问题。我正在尝试启动一项活动,但不是那样,另一项活动正在开放。我正在尝试打开RegActivity,我确实在mainfiest中指定了它并且还使它成为Launcher活动但是当我运行应用程序时“MainActivity”正在调用。 MainActivity甚至不是Launcher或Default活动。我清理了项目,重建了它。但是,仍然没有任何作用。我被卡住了。我浪费了我的一整天,没有任何帮助我。请帮助伙计!!! 停止低估它。如果你不知道答案,那就离开吧。
我最主要的
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.solodroid.ecommerce" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@drawable/ic_launcher"
android:label="Frizzy"
android:theme="@style/AppTheme2" >
<activity
android:name="com.solodroid.ecommerce.RegActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.solodroid.ecommerce.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.solodroid.ecommerce.ActivityCategoryList"
android:screenOrientation="portrait" />
<activity
android:name="com.solodroid.ecommerce.ActivityMenuList"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" />
<activity
android:name="com.solodroid.ecommerce.ActivityMenuDetail"
android:screenOrientation="portrait" />
<activity
android:name="com.solodroid.ecommerce.ActivityCart"
android:screenOrientation="portrait" />
<activity
android:name="com.solodroid.ecommerce.ActivityCheckout"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" />
<activity
android:name="com.solodroid.ecommerce.ActivityConfirmMessage"
android:screenOrientation="portrait" />
<activity
android:name="com.solodroid.ecommerce.ActivityContactUs"
android:screenOrientation="portrait" />
<activity
android:name="com.solodroid.ecommerce.ActivityProfile"
android:screenOrientation="portrait" />
<activity
android:name="com.solodroid.ecommerce.ActivityInformation"
android:screenOrientation="portrait" />
<activity
android:name="com.solodroid.ecommerce.ActivityAbout"
android:screenOrientation="portrait" />
<activity
android:name="com.solodroid.ecommerce.LoginActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar"/>
<service android:name="com.parse.PushService" />
<receiver android:name="com.parse.ParseBroadcastReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"
/>
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
</application>
</manifest>
RegActivity.java
package com.solodroid.ecommerce;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import org.json.JSONException;
import java.io.IOException;
import java.util.HashMap;
public class RegActivity extends AppCompatActivity {
private EditText etid, etname, etstorename, etemail, etphone, etdoj;
Button btnregister;
TextView tvlogin;
private ParseContent parseContent;
PreferenceHelper preferenceHelper;
private final int RegTask = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reg);
preferenceHelper = new PreferenceHelper(this);
parseContent = new ParseContent(this);
if(preferenceHelper.getIsLogin()){
Intent intent = new Intent(RegActivity.this,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
this.finish();
}
//etid = (EditText) findViewById(R.id.etmi_id);
etname = (EditText) findViewById(R.id.etname);
//etstorename = (EditText) findViewById(R.id.etstore_name);
etemail = (EditText) findViewById(R.id.etemail);
etphone = (EditText) findViewById(R.id.etphone);
// etdoj = (EditText) findViewById(R.id.etdoj);
btnregister = (Button) findViewById(R.id.btn);
tvlogin = (TextView) findViewById(R.id.tvlogin);
tvlogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(RegActivity.this,LoginActivity.class);
startActivity(intent);
}
});
btnregister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
register();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
private void register() throws IOException, JSONException {
if (!AndyUtils.isNetworkAvailable(RegActivity.this)) {
Toast.makeText(RegActivity.this, "Internet is required!", Toast.LENGTH_SHORT).show();
return;
}
AndyUtils.showSimpleProgressDialog(RegActivity.this);
final HashMap<String, String> map = new HashMap<>();
// map.put(AndyConstants.Params.MI_ID, etid.getText().toString());
map.put(AndyConstants.Params.NAME, etname.getText().toString());
// map.put(AndyConstants.Params.STORE_NAME, etstorename.getText().toString());
map.put(AndyConstants.Params.EMAIL, etemail.getText().toString());
map.put(AndyConstants.Params.PHONE, etphone.getText().toString());
//map.put(AndyConstants.Params.DOJ, etdoj.getText().toString());
new AsyncTask<Void, Void, String>(){
protected String doInBackground(Void[] params) {
String response="";
try {
HttpRequest req = new HttpRequest(AndyConstants.ServiceType.REGISTER);
response = req.prepare(HttpRequest.Method.POST).withData(map).sendAndReadString();
} catch (Exception e) {
response=e.getMessage();
}
return response;
}
protected void onPostExecute(String result) {
//do something with response
Log.d("newwwss", result);
onTaskCompleted(result, RegTask);
}
}.execute();
}
private void onTaskCompleted(String response,int task) {
Log.d("responsejson", response.toString());
AndyUtils.removeSimpleProgressDialog(); //will remove progress dialog
switch (task) {
case RegTask:
if (parseContent.isSuccess(response)) {
parseContent.saveInfo(response);
Toast.makeText(RegActivity.this, "Registered Successfully!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(RegActivity.this,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
this.finish();
}else {
Toast.makeText(RegActivity.this, parseContent.getErrorMessage(response), Toast.LENGTH_SHORT).show();
}
}
}
}
LoginActivity.java
package com.solodroid.ecommerce;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import org.json.JSONException;
import java.io.IOException;
import java.util.HashMap;
public class LoginActivity extends AppCompatActivity {
private EditText etemail, etpassword;
Button btnlogin;
TextView tvreg;
private ParseContent parseContent;
private final int LoginTask = 1;
PreferenceHelper preferenceHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
parseContent = new ParseContent(this);
preferenceHelper = new PreferenceHelper(this);
etemail = (EditText) findViewById(R.id.etusername);
etpassword = (EditText) findViewById(R.id.etpassword);
btnlogin = (Button) findViewById(R.id.btn);
tvreg = (TextView) findViewById(R.id.tvreg);
tvreg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(LoginActivity.this, RegActivity.class);
startActivity(intent);
}
});
btnlogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
login();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
private void login() throws IOException, JSONException {
if (!AndyUtils.isNetworkAvailable(LoginActivity.this)) {
Toast.makeText(LoginActivity.this, "Internet is required!", Toast.LENGTH_SHORT).show();
return;
}
AndyUtils.showSimpleProgressDialog(LoginActivity.this);
final HashMap<String, String> map = new HashMap<>();
map.put(AndyConstants.Params.EMAIL, etemail.getText().toString());
map.put(AndyConstants.Params.PASSWORD, etpassword.getText().toString());
new AsyncTask<Void, Void, String>(){
protected String doInBackground(Void[] params) {
String response="";
try {
HttpRequest req = new HttpRequest(AndyConstants.ServiceType.LOGIN);
response = req.prepare(HttpRequest.Method.POST).withData(map).sendAndReadString();
} catch (Exception e) {
response=e.getMessage();
}
return response;
}
protected void onPostExecute(String result) {
//do something with response
Log.d("newwwss", result);
onTaskCompleted(result,LoginTask);
}
}.execute();
}
private void onTaskCompleted(String response, int task) {
Log.d("responsejson", response.toString());
AndyUtils.removeSimpleProgressDialog(); //will remove progress dialog
switch (task) {
case LoginTask:
if (parseContent.isSuccess(response)) {
parseContent.saveInfo(response);
Toast.makeText(LoginActivity.this, "Login Successfully!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(LoginActivity.this,RegActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
this.finish();
}else {
Toast.makeText(LoginActivity.this, parseContent.getErrorMessage(response), Toast.LENGTH_SHORT).show();
}
}
}
}
MainActivity.java
package com.solodroid.ecommerce;
import java.io.IOException;
import java.util.ArrayList;
import com.parse.Parse;
import com.parse.ParseAnalytics;
import com.parse.ParseInstallation;
import com.parse.PushService;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.database.SQLException;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
@SuppressLint("NewApi")
public class MainActivity extends FragmentActivity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
// nav drawer title
private CharSequence mDrawerTitle;
// used to store app title
private CharSequence mTitle;
// slide menu items
private String[] navMenuTitles;
private TypedArray navMenuIcons;
private ArrayList<NavDrawerItem> navDrawerItems;
private AdapterNavDrawerList adapter;
// declare dbhelper and adapter object
static DBHelper dbhelper;
AdapterMainMenu mma;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nav_drawer_main);
// Parse push notification
Parse.initialize(this, getString(R.string.parse_application_id), getString(R.string.parse_client_key));
ParseAnalytics.trackAppOpened(getIntent());
PushService.setDefaultPushCallback(this, MainActivity.class);
ParseInstallation.getCurrentInstallation().saveInBackground();
mTitle = mDrawerTitle = getTitle();
// load slide menu items
navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
// nav drawer icons from resources
navMenuIcons = getResources().obtainTypedArray(R.array.nav_drawer_icons);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
mDrawerLayout.setDrawerShadow(R.drawable.navigation_drawer_shadow, GravityCompat.START);
navDrawerItems = new ArrayList<NavDrawerItem>();
// adding nav drawer items to array
navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1)));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1)));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1)));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[6], navMenuIcons.getResourceId(6, -1)));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[7], navMenuIcons.getResourceId(7, -1)));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[8], navMenuIcons.getResourceId(8, -1)));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[9], navMenuIcons.getResourceId(9, -1)));
// Recycle the typed array
navMenuIcons.recycle();
mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
// setting the nav drawer list adapter
adapter = new AdapterNavDrawerList(getApplicationContext(), navDrawerItems);
mDrawerList.setAdapter(adapter);
// enabling action bar app icon and behaving it as toggle button
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.header)));
// get screen device width and height
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
// checking internet connection
if (!Constant.isNetworkAvailable(MainActivity.this)) {
Toast.makeText(MainActivity.this, getString(R.string.no_internet), Toast.LENGTH_SHORT).show();
}
mma = new AdapterMainMenu(this);
dbhelper = new DBHelper(this);
// create database
try {
dbhelper.createDataBase();
} catch (IOException ioe) {
throw new Error("Unable to create database");
}
// then, the database will be open to use
try {
dbhelper.openDataBase();
} catch (SQLException sqle) {
throw sqle;
}
// if user has already ordered food previously then show confirm dialog
if (dbhelper.isPreviousDataExist()) {
showAlertDialog();
}
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, // nav
// menu
// toggle
// icon
R.string.app_name, // nav drawer open - description for
// accessibility
R.string.app_name // nav drawer close - description for
// accessibility
) {
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
// calling onPrepareOptionsMenu() to show action bar icons
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
// calling onPrepareOptionsMenu() to hide action bar icons
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
if (savedInstanceState == null) {
// on first time display view for first nav item
displayView(0);
}
}
// show confirm dialog to ask user to delete previous order or not
void showAlertDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.confirm);
builder.setMessage(getString(R.string.db_exist_alert));
builder.setCancelable(false);
builder.setPositiveButton(getString(R.string.yes), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
// delete order data when yes button clicked
dbhelper.deleteAllData();
dbhelper.close();
}
});
builder.setNegativeButton(getString(R.string.no), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
// close dialog when no button clicked
dbhelper.close();
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
dbhelper.deleteAllData();
dbhelper.close();
finish();
overridePendingTransition(R.anim.open_main, R.anim.close_next);
}
/**
* Slide menu item click listener
*/
private class SlideMenuClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// display view for selected nav drawer item
displayView(position);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// toggle nav drawer on selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle action bar actions click
switch (item.getItemId()) {
case R.id.rate_app:
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getPackageName())));
} catch (android.content.ActivityNotFoundException anfe) {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("http://play.google.com/store/apps/details?id=" + getPackageName())));
}
return true;
case R.id.more_app:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.more_apps))));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
/*
* * Called when invalidateOptionsMenu() is triggered
*/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// if nav drawer is opened, hide the action items
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.ic_menu).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
/**
* Diplaying fragment view for selected nav drawer list item
*/
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new ActivityHome();
break;
case 1:
startActivity(new Intent(getApplicationContext(), ActivityCategoryList.class));
overridePendingTransition(R.anim.open_next, R.anim.close_next);
break;
case 2:
startActivity(new Intent(getApplicationContext(), ActivityCart.class));
overridePendingTransition(R.anim.open_next, R.anim.close_next);
break;
case 3:
startActivity(new Intent(getApplicationContext(), ActivityCheckout.class));
overridePendingTransition(R.anim.open_next, R.anim.close_next);
break;
case 4:
startActivity(new Intent(getApplicationContext(), ActivityProfile.class));
overridePendingTransition(R.anim.open_next, R.anim.close_next);
break;
case 5:
startActivity(new Intent(getApplicationContext(), ActivityInformation.class));
overridePendingTransition(R.anim.open_next, R.anim.close_next);
break;
case 6:
startActivity(new Intent(getApplicationContext(), ActivityAbout.class));
overridePendingTransition(R.anim.open_next, R.anim.close_next);
break;
case 7:
Intent sendInt = new Intent(Intent.ACTION_SEND);
sendInt.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.app_name));
sendInt.putExtra(Intent.EXTRA_TEXT, "E-Commerce Android App\n\"" + getString(R.string.app_name)
+ "\" \nhttps://play.google.com/store/apps/details?id=" + getPackageName());
sendInt.setType("text/plain");
startActivity(Intent.createChooser(sendInt, "Share"));
break;
case 8:
startActivity(new Intent(getApplicationContext(), ActivityContactUs.class));
overridePendingTransition(R.anim.open_next, R.anim.close_next);
break;
case 9:
dbhelper.deleteAllData();
dbhelper.close();
MainActivity.this.finish();
overridePendingTransition(R.anim.open_next, R.anim.close_next);
break;
default:
break;
}
if (fragment != null) {
android.app.FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
@Override
public void setTitle(CharSequence title) {
mTitle = title;
getActionBar().setTitle(mTitle);
}
/**
* When using the ActionBarDrawerToggle, you must call it during
* onPostCreate() and onConfigurationChanged()...
*/
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Pass any configuration change to the drawer toggls
mDrawerToggle.onConfigurationChanged(newConfig);
}
}
请告诉我这里有什么问题?我找不到任何东西。
答案 0 :(得分:1)
你的onCreate()
中的代码怎么样?if(preferenceHelper.getIsLogin()){
Intent intent = new Intent(RegActivity.this,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
this.finish();
}
如果preferenceHelper.getIsLogin()
为真,您将无法看到您的RegActivity,因为它会立即启动MainActivity。