来自另一个.xml文件的视图的findViewById

问题描述 投票:-1回答:1

activity_main.xml文件:


TextView:

    <TextView
        android:id="@+id/ProfilName"
        android:layout_width="148dp"
        android:layout_height="77dp"
        android:layout_marginStart="131dp"
        android:layout_marginLeft="131dp"
        android:layout_marginTop="225dp"
        android:layout_marginEnd="132dp"
        android:layout_marginRight="132dp"
        android:layout_marginBottom="381dp"
        android:gravity="center_horizontal"
        android:text="TextView"
        android:textAlignment="center"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

ImageView:

    <ImageView
        android:id="@+id/ProfilPicture"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="141dp"
        android:layout_marginLeft="141dp"
        android:layout_marginTop="84dp"
        android:layout_marginEnd="142dp"
        android:layout_marginRight="142dp"
        android:layout_marginBottom="471dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:srcCompat="@tools:sample/avatars" />

LoginActivity.java文件:


声明:

    private TextView mNameUser;
    private ImageView mProfilPicture;

正在尝试获取其ID:

        mNameUser = findViewById(R.id.ProfilName);
        mProfilPicture = findViewById(R.id.ProfilPicture);

例如,编辑TextView的文本:

mNameUser.setText("");

结果:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference

例如,我正在尝试从一个活动中更改位于另一个活动中的用户名。

java android findviewbyid
1个回答
0
投票

由于您的LoginActivity在MainActivity之前,因此尚未创建MainActivity,因此您不能向其发送任何数据,也不能在其中找到任何视图,因为它的布局没有膨胀。

// 1. When user click on login button in your LoginActivity
Intent intent = new Intent(this, MainActivity.class); // this or LoginActivity.this
intent.putExtra("fofo", value); // value comes from EditText in your LoginActivity
startActivity(intent);

// 2. In onCreate() method in your MainActivity
Bundle extras = getIntent().getExtras();
if (extras != null) {
    String value = extras.getString("fofo");
}
mNameUser.setText(value); // this line will edit your TextView in MainActivity
© www.soinside.com 2019 - 2024. All rights reserved.