片段内的Android ProgressBar NPE

时间:2018-12-03 00:05:26

标签: android fragment android-view

我想在我的 LoginFragment 中显示一个 Progressbar 以进行测试,但是在我的LoginFragment中的 OnCreateView 回调中连接了视图变量之后, ,我的应用程序关闭,原因是:

Attempt to invoke virtual method 'void android.widget.ProgressBar.setVisibility(int)' on a null object reference

但是让我发疯的是,这是引发NPE的唯一视图,而我能够毫无问题地操纵和引用的所有其他视图。我还尝试在托管 LoginFragment Progressbar 的 LoginActivity 中使用 Progressbar em>可以按预期工作,但是为什么不在片段中?

我附加了与 LoginFragment

相对应的代码xml和片段代码
public class LoginFragment extends Fragment {

    private AutoCompleteTextView name;
    private EditText password;
    private ProgressBar progressBar;

    //......... Skipped For Brevity .........

  @Override
  public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup   container,
                         Bundle savedInstanceState) {

    final View v = inflater.inflate(R.layout.login_fragment, container, false);

    v.setBackgroundResource(R.drawable.album_jazz_blues);

    name = v.findViewById(R.id.username);
    password = v.findViewById(R.id.password);

    progressBar = v.findViewById(R.id.progress_bar);

    //progressBar.setVisibility(View.VISIBLE);   <-------- THROWS NPE

    return v;
  }
}

XML:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

<android.support.constraint.ConstraintLayout
    android:id="@+id/constraint_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/login_parent_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"

        android:padding="16dp"
        android:orientation="vertical"
        tools:layout_alignParentTop="true"
        tools:layout_alignParentStart="true" >

        <AutoCompleteTextView
            android:id="@+id/username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textEmailAddress"
            android:hint="@string/email"
            android:maxLines="1"
            android:singleLine="true" />

        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/password"
            android:inputType="textPassword"
            android:maxLines="1"
            android:singleLine="true"
            tools:ignore="Autofill" />

  </LinearLayout>


</android.support.constraint.ConstraintLayout>

<ProgressBar
    style="@style/Widget.AppCompat.ProgressBar"
    android:layout_gravity="center"
    android:indeterminate="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/progress_bar">

</ProgressBar>

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

正如亚伦(Aaron)在评论中指出的那样,我有两个不同的布局文件夹,一个普通文件夹和一个v-26文件夹,它们不一定彼此镜像,因此我为这些文件夹分配了完全相同的元素和属性以及相应的值

除外
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;

namespace App80
{
    [Activity(Label = "SeeTime")]
    public class SeeTime : Activity
    {
        //MainActivity mainActivity;
        private EditText timer;
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.Time);
            timer = FindViewById<EditText>(Resource.Id.txtTime);

            int intValue = Intent.Extras.GetInt("Timer", 20);

            timer.Text = intValue.ToString();

        }

    }
}

v-26 EditTextandroid:importantForAutofill 和常规布局文件夹android:importantForAutofill="no中的

autofill属性