Java 登录后如何在屏幕上显示用户名?
我有一个名为accountinfo的类,我想在用户登录后显示用户名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
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。