Я пытаюсь сделать это, когда пользователь вошел в систему, когда он переходит к настройкам учетной записи. Активность моего приложения он увидит свое имя пользователя через FrameLayout, но если он не войдет в систему, он увидит кнопку Login.I сделал класс PreferenceData для обработки этого, который, я считаю, я правильно настроил, но когда я вошел в систему, я все еще вижу свою кнопку входа в систему вместо созданного мной FrameLayout. m, используя базу данных для хранения учетных записей пользователей, если это помогает.Как переключиться с Button на FrameLayout на основе состояния входа
Вот мой код
package com.fullfrontalgames.numberfighter;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.TextView;
public class AccountSettings extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.accountsettings);
SharedPreferences appPref =
getSharedPreferences("com.fullfrontalgames.numberfighter.Settings_Preferences", MODE_PRIVATE);
String loggedin = PreferenceData.getUserLoggedInStatus(true);
Button LoginAS = (Button)findViewById(R.id.LoginAS);
Button Done = (Button)findViewById(R.id.done);
FrameLayout accountframe = (FrameLayout)findViewById(R.id.AccountFrameLayout);
TextView accounttv = (TextView)findViewById(R.id.AccountTextView);
DBAdapter db = new DBAdapter(this);
db = db.open();
accountframe.setVisibility(View.GONE);
LoginAS.setVisibility(View.GONE);
Done.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent Intent = new Intent(AccountSettings.this,activity_main.class);
startActivity(Intent);
}
});
if (accountframe.equals(loggedin))
{
accountframe.setVisibility(View.VISIBLE);
accounttv.setText((CharSequence) appPref);
} else {
accountframe.setVisibility(View.GONE);
LoginAS.setVisibility(View.VISIBLE);
LoginAS.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity (new Intent ("com.fullfrontalgames.numberfighter.Login"));
}
});
}
}
}
PreferenceData Class
package com.fullfrontalgames.numberfighter;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.preference.PreferenceManager;
import android.view.View.OnClickListener;
public class PreferenceData {
static final String PREF_LOGGEDIN_USERNAME = "logged_in_username";
static final String PREF_USER_LOGGEDIN_STATUS = "logged_in_status";
public static SharedPreferences getSharedPreferences(Context ctx) {
return PreferenceManager.getDefaultSharedPreferences(ctx);
}
public static void setLoggedInUsername(Context ctx, String Username)
{
Editor editor = getSharedPreferences(ctx).edit();
editor.putString(PREF_LOGGEDIN_USERNAME, Username);
editor.commit();
}
public static String getLoggedInUsername(Context ctx)
{
return getSharedPreferences(ctx).getString(PREF_LOGGEDIN_USERNAME, "");
}
public static void setUserLoggedInStatus(Context ctx, boolean status)
{
Editor editor = getSharedPreferences(ctx).edit();
editor.putBoolean(PREF_USER_LOGGEDIN_STATUS, status);
editor.commit();
}
public static boolean getUserLoggedInStatus(Context ctx)
{
return getSharedPreferences(ctx).getBoolean(PREF_USER_LOGGEDIN_STATUS, false);
}
public static void clearLoggedInUsername(Context ctx)
{
Editor editor = getSharedPreferences(ctx).edit();
editor.remove(PREF_LOGGEDIN_USERNAME);
editor.remove(PREF_USER_LOGGEDIN_STATUS);
editor.commit();
}
public static void setUserLoggedInStatus(OnClickListener onClickListener,
boolean status) {
// TODO Auto-generated method stub
}
public static String getUserLoggedInStatus(boolean b) {
// TODO Auto-generated method stub
return null;
}
}
Строка журнала была из Activity PreferenceData. То, что я пытаюсь сделать, - это когда пользователь регистрируется в своей учетной записи, они будут видеть свое имя в FrameLayout, состоящем из Imageview, TextView и кнопки, но если они не заносятся в журнал, они просто видят кнопку из родительского представления LinearLayout, в которой говорится о входе, которое приведет к моей активности входа. Я пытаюсь представить 2 разных представления на основе того, был ли пользователь зарегистрирован или нет. – Cranosaur
, но вы сравниваете две разные вещи ... вы не можете сравнить View со строкой, вы должны проверить, что является зарегистрированной пользовательской строкой, если она существует, и делать ваши действия соответственно. –
см. Обновленный ответ. –