单击Textview“在此处注册”时,应将其重定向到Register Activity,但在Main Activity上重定向。我不知道有什么问题。你能告诉我怎么了吗?以及如何解决问题?
我执行以下操作:
LoginActivity.java
public class LoginActivity extends AppCompatActivity implements View.OnClickListener {
private EditText etusername, etpassword;
private Button btnlogin;
private TextView tvreg;
private ParseContent parseContent;
private final int LoginTask = 1;
private PreferenceHelper preferenceHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
parseContent = new ParseContent(this);
preferenceHelper = new PreferenceHelper(this);
etusername = (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(this);
btnlogin.setOnClickListener(this);
}
@SuppressLint("StaticFieldLeak")
private void login() throws IOException, JSONException {
if (!Utils.isNetworkAvailable(LoginActivity.this)) {
Toast.makeText(LoginActivity.this, "Internet is required!", Toast.LENGTH_SHORT).show();
return;
}
Utils.showSimpleProgressDialog(LoginActivity.this);
final HashMap<String, String> map = new HashMap<>();
map.put(Constants.Params.USERNAME, etusername.getText().toString());
map.put(Constants.Params.PASSWORD, etpassword.getText().toString());
new AsyncTask<Void, Void, String>(){
protected String doInBackground(Void[] params) {
String response="";
try {
HttpRequest req = new HttpRequest(Constants.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());
Utils.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,MainActivity.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();
}
}
}
@Override
public void onClick(View v) {
if (v == tvreg){
startActivity(new Intent(this, RegisterActivity.class));
}
if (v == btnlogin){
try {
login();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
RegisterActivity.java
public class RegisterActivity extends AppCompatActivity {
private EditText etname, ethobby, etusername, etpassword;
private Button btnregister;
private TextView tvlogin;
private ParseContent parseContent;
private PreferenceHelper preferenceHelper;
private final int RegTask = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
preferenceHelper = new PreferenceHelper(this);
parseContent = new ParseContent(this);
if(preferenceHelper.getIsLogin()){
Intent intent = new Intent(RegisterActivity.this,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
this.finish();
}
etname = (EditText) findViewById(R.id.etname);
ethobby = (EditText) findViewById(R.id.ethobby);
etusername = (EditText) findViewById(R.id.etusername);
etpassword = (EditText) findViewById(R.id.etpassword);
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(RegisterActivity.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 (!Utils.isNetworkAvailable(RegisterActivity.this)) {
Toast.makeText(RegisterActivity.this, "Internet is required!", Toast.LENGTH_SHORT).show();
return;
}
Utils.showSimpleProgressDialog(RegisterActivity.this);
final HashMap<String, String> map = new HashMap<>();
map.put(Constants.Params.NAME, etname.getText().toString());
map.put(Constants.Params.HOBBY, ethobby.getText().toString());
map.put(Constants.Params.USERNAME, etusername.getText().toString());
map.put(Constants.Params.PASSWORD, etpassword.getText().toString());
new AsyncTask<Void, Void, String>(){
protected String doInBackground(Void[] params) {
String response="";
try {
HttpRequest req = new HttpRequest(Constants.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());
Utils.removeSimpleProgressDialog(); //will remove progress dialog
switch (task) {
case RegTask:
if (parseContent.isSuccess(response)) {
parseContent.saveInfo(response);
Toast.makeText(RegisterActivity.this, "Registered Successfully!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(RegisterActivity.this,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
this.finish();
}else {
Toast.makeText(RegisterActivity.this, parseContent.getErrorMessage(response), Toast.LENGTH_SHORT).show();
}
}
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private DrawerLayout drawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
//setSupportActionBar(toolbar);
drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar,
R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new HomeFragment()).commit();
navigationView.setCheckedItem(R.id.nav_home);
}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.nav_home:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
//The problem is redirected on HomeFragment
new HomeFragment()).commit();
break;
case R.id.nav_profile:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new ProfileFragment()).commit();
break;
case R.id.nav_myloc:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new MylocFragment()).commit();
break;
case R.id.nav_map:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new MapFragment()).commit();
break;
case R.id.nav_about:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new AboutFragment()).commit();
break;
case R.id.nav_logout:
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void onBackPressed() {
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
}
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:ignore="GoogleAppIndexingWarning">
<activity
android:name=".LoginActivity"
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=".RegisterActivity"/>
<activity android:name=".MainActivity"
android:theme="@style/AppTheme.NoActionBar"/>
</application>
没有错误,它只是跳过并重定向到HomeActivity,即HomeFragment所在的位置。
答案 0 :(得分:1)
好像您在preferenceHelper true 中获得了 getIsLogin()一样,这就是它进行重定向的原因 注册活动:
if(preferenceHelper.getIsLogin()){
Intent intent = new Intent(RegisterActivity.this,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
this.finish();
}
只需先清除首选项,然后再登录页面或将用户重定向到主要活动(如果我们已经登录的用户)