Java 登录后如何在屏幕上显示用户名?

Java 登录后如何在屏幕上显示用户名?,java,android,Java,Android,我有一个名为accountinfo的类,我想在用户登录后显示用户名 public class accountinfo extends AppCompatActivity { TextView name; TextView nameTV; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layo

我有一个名为accountinfo的类,我想在用户登录后显示用户名

 public class accountinfo extends AppCompatActivity {

TextView name;
TextView nameTV;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_accountinfo);


    nameTV=(TextView)findViewById(R.id.name);

    name=(TextView) findViewById(R.id.email);

    nameTV.setText("Welcome " + name);



  }
}
这将返回“Welcome null”

电子邮件是存储在数据库中的用户名

使用
name.getText().toString()
。在
onCreate()
中调用
loginbutton.setonclicklistener(this)
后,在
onClick(视图v)
处,而不是
onCreate()
,因为用户无法在
onCreate()
结束之前输入文本

为了允许用户输入他/她的信息,最好使用EditText而不是TextView

例如

活动\u accountinfo.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:orientation="vertical">

            <TextView
                android:layout_height="wrap_content"
                android:text="welcome"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:layout_width="wrap_content"
                android:id="@+id/name"/>

            <EditText
                android:layout_height="wrap_content"
                android:inputType="textEmailAddress"
                android:ems="10"
                android:layout_width="wrap_content"
                android:id="@+id/email"/>

        </LinearLayout>

        <Button
            android:layout_height="wrap_content"
            android:text="log in"
            android:layout_width="wrap_content"
            android:id="@+id/loginButton"/>

    </LinearLayout>

</LinearLayout>

使用
name.getText().toString()
。在
onCreate()
中调用
loginbutton.setonclicklistener(this)
后,在
onClick(视图v)
处,而不是
onCreate()
,因为用户无法在
onCreate()
结束之前输入文本

为了允许用户输入他/她的信息,最好使用EditText而不是TextView

例如

活动\u accountinfo.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:orientation="vertical">

            <TextView
                android:layout_height="wrap_content"
                android:text="welcome"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:layout_width="wrap_content"
                android:id="@+id/name"/>

            <EditText
                android:layout_height="wrap_content"
                android:inputType="textEmailAddress"
                android:ems="10"
                android:layout_width="wrap_content"
                android:id="@+id/email"/>

        </LinearLayout>

        <Button
            android:layout_height="wrap_content"
            android:text="log in"
            android:layout_width="wrap_content"
            android:id="@+id/loginButton"/>

    </LinearLayout>

</LinearLayout>

如果登录成功,您可以通过SharedReferences保存数据。将“名称”保存到共享首选项,然后检索它。当然这很容易。看看

把这个放在登录活动中

userName = edtName.getText().toString();
SharedPreferences prefs = this.getSharedPreferences(
              "com.example.app", Context.MODE_PRIVATE);
prefs.edit().putString("name",userName).apply();
然后您需要从SharedReference检索数据,如下所示:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String name = pres.getString("name", "");

因此,您可以轻松发送任何数据。

如果登录成功,您可以通过SharedReferences保存数据。将“名称”保存到共享首选项,然后检索它。当然这很容易。看看

把这个放在登录活动中

userName = edtName.getText().toString();
SharedPreferences prefs = this.getSharedPreferences(
              "com.example.app", Context.MODE_PRIVATE);
prefs.edit().putString("name",userName).apply();
然后您需要从SharedReference检索数据,如下所示:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String name = pres.getString("name", "");
因此,您可以轻松地发送任何数据。

使用put extra

在loginclass中:

LoginButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

     //your text do u want pass
    String s=edit.getText().toString();

    Intent ii=new Intent(LoginActivity.this, newclass.class);
    ii.putExtra("name", s);
    startActivity(ii);
}
二等舱:

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.intent);
    Textv = (TextView)findViewById(R.id.tv2);
    Intent iin= getIntent();
    Bundle b = iin.getExtras();

    if(b!=null)
    {
        String j =(String) b.get("name");
    }
}
使用put extra

在loginclass中:

LoginButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

     //your text do u want pass
    String s=edit.getText().toString();

    Intent ii=new Intent(LoginActivity.this, newclass.class);
    ii.putExtra("name", s);
    startActivity(ii);
}
二等舱:

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.intent);
    Textv = (TextView)findViewById(R.id.tv2);
    Intent iin= getIntent();
    Bundle b = iin.getExtras();

    if(b!=null)
    {
        String j =(String) b.get("name");
    }
}

从数据库获取数据的逻辑在哪里?从数据库获取数据的逻辑在哪里?如果当前代码给出了“欢迎null”,这将抛出一个
NullPointerException
,除非他们碰巧将
电子邮件
文本视图
上的
文本属性设置为
。程序在onCreate method.Edited中的if语句上抛出错误。要使用gettext.tostring。如果当前代码给出“欢迎null”,这将抛出一个
NullPointerException
,除非他们碰巧将
email
TextView
上的
text
属性设置为
“null”
。程序在onCreate方法中的If语句上抛出一个错误。要使用gettext.tostring.replace edtName with nameTV.replace edtName with nameTV。