Android: как получить информацию об имени пользователя после входа в систему и отобразить приветственное имя пользователя в MainActivity - PullRequest
0 голосов
/ 02 июня 2011

Я провел много поисков по этому вопросу, и большинство из них не для Android.

Я использую sharedpref, чтобы сохранить имя пользователя в сеансе до выхода из системы.Я хотел бы отобразить приветствие "имя пользователя" в основной деятельности.

.Сейчас я хотел бы получить пример кода для захвата «имени пользователя» в классе mainactivity, который сохранен в sharedprefs, и отображения его в textview.

Ниже приведен мой класс входа в систему, который открывает mainActivity

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor = prefs.edit();
        editor.putString("username", username);
        editor.commit();

        if(prefs.getString("username", null)!=null)
        {Intent i = new Intent(getApplicationContext(), Customer.class); 
        startActivity(i);}

        etUsername = (EditText)findViewById(R.id.username);
        btnLogin = (Button)findViewById(R.id.login_button);
        btnCancel = (Button)findViewById(R.id.cancel_button);
        lblResult = (TextView)findViewById(R.id.result);

        btnLogin.setOnClickListener(new OnClickListener() {
            //@Override
            public void onClick(View v) {
            // Check Login
            String username = etUsername.getText().toString();


            if(username.equals("1111")){
                lblResult.setText("Login successful.");

               Intent i = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(i);
                            } 
            else if(username.equals("2222")){
                lblResult.setText("Login successful.");

                Intent i = new Intent(getApplicationContext(), MainActivity2.class);
                startActivity(i);

            }
btnCancel.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
               // Close the application
            finish();

                }
            });   }

MainActivity.java

public class MainActivity extends ListActivity
{

    TextView selection;
    CustomerListItem[] items = { 
            new CustomerListItem("Start Trip", StartTripActivity.class), 
            new CustomerListItem("Clock in", ClockinActivity.class), 
            new CustomerListItem("Log Out", LogoutActivity.class)};
    private TextView resultsTxt;

    @Override
    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);
        setContentView(R.layout.customer);
        setListAdapter(new ArrayAdapter<CustomerListItem>(
                this, android.R.layout.simple_list_item_1, items));
        selection = (TextView) findViewById(R.id.selection);
showname = (TextView) findViewById(R.id.showname);
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id)
    {
        super.onListItemClick(l, v, position, id);
        final Intent intent = new Intent(this, items[position].getActivity());
        startActivityForResult(intent, position);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent)
    {
        super.onActivityResult(requestCode, resultCode, intent);
        if (resultCode == RESULT_OK)
        {
            // Perform different actions based on from which activity is
            // the application returning:
            switch (requestCode)
            {
                case 0:
                    // TODO: handle the return of the 
                    break;
                case 1:
                    // TODO: handle the return of the                     
break;
                case 2:
                    // TODO: handle the return of the                    
break;
                default:
                    break;
            }
        }
        else if (resultCode == RESULT_CANCELED)
        {
            resultsTxt.setText("Canceled");
        }
    }
}

Ответы [ 2 ]

4 голосов
/ 02 июня 2011

Попробуйте ...

В вашей учетной записи Активность:

SharedPreferences prefs = getSharedPreferences("MyApp", MODE_PRIVATE);
prefs.edit().putString("username", username).commit();
Intent i = new Intent(this, MainActivity.class); 
startActivity(i);

В вашей основной деятельности ...

public class MainActivity extends Activity {

    private String username = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(...) here

        SharedPreferences prefs = getSharedPreferences("MyApp", MODE_PRIVATE);
        username = prefs.getString("username", "UNKNOWN");

        ...

    }
}
2 голосов
/ 02 июня 2011

Во-первых, вы должны передать имя пользователя как дополнительное, чтобы следующее действие могло его захватить.Поместите это в свой логин:

String username = prefs.getString("username");

Intent i = new Intent(this, MainActivity.class);
// this is where you should pass the username
i.putExtra("username", username);
startActivity(i);

После этого укажите это в MainActivity, возможно, в методе onCreate:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainview);

    Bundle extras = getIntent().getExtras();

    if (extras.containsKey("username")) {
        String username = extras.getString("username");

        // put whatever code you want here to show the username

    }
}

Надеюсь, он ответит на ваш вопрос.*

...