" java.lang.IllegalArgumentException:view不能为null"程序在导航时关闭

时间:2017-12-20 18:51:40

标签: android-studio imageview

只要我导航到ProfileActivity,应用就会关闭。

  

致命异常:主程序:hfad.com.hallofmemesprototype,PID:   19092年java.lang.RuntimeException:无法启动活动   ComponentInfo {hfad.com.hallofmemesprototype / hfad.com.hallofmemesprototype.Profile.ProfileActivity}:   java.lang.IllegalArgumentException:view不能为null

这里是" ProfileActivity"代码。

public class ProfileActivity extends AppCompatActivity {
private static final int ACTIVITY_NUM = 3;

private Context mContext = ProfileActivity.this;

private ProgressBar mProgressBar;
private ImageView profilePhoto;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_profile);
    setupBottomNavigationView();
    setupToolbar();
    setupActivityWidgets();
    setProfileImage();
}

private void setProfileImage(){
    String imgURL = "www.androidzone.org/wp-content/uploads/2013/02/android-musical2.jpg";
    UniversalImageLoader.setImage( imgURL, profilePhoto, mProgressBar, "https://");
}

private void setupActivityWidgets(){
    mProgressBar = findViewById(R.id.profileProgressBar);
    mProgressBar.setVisibility(View.GONE);
    profilePhoto = findViewById(R.id.profile_photo);
}

private void setupToolbar() {
    Toolbar toolbar = findViewById(R.id.profileToolBar);
    setSupportActionBar(toolbar);

    ImageView profileMenu = findViewById(R.id.profileMenu);
    profileMenu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(mContext, AccountSettingsActivity.class);
            startActivity(intent);
        }
    });

}

/**
 * BottomNavigationView setup
 */
private void setupBottomNavigationView() {
    BottomNavigationViewEx bottomNavigationViewEx = findViewById(R.id.bottomNavViewBar);
    BottomNavigationViewHelper.bottomNavigationView(bottomNavigationViewEx);
    BottomNavigationViewHelper.enableNavigation(mContext, bottomNavigationViewEx);
    Menu menu = bottomNavigationViewEx.getMenu();
    MenuItem menuItem = menu.getItem(ACTIVITY_NUM);
    menuItem.setChecked(true);

}

}

2 个答案:

答案 0 :(得分:0)

您必须检查使用findViewById()获得的所有视图是否确实存在于activity_profile.xml布局中。

一个或多个视图确实不存在,并且您有一个空值来获取引用。

 findViewById(R.id.profileProgressBar);
 findViewById(R.id.profile_photo);
 findViewById(R.id.profileToolBar);
 findViewById(R.id.profileMenu);
 findViewById(R.id.bottomNavViewBar);

最初您没有收到任何错误,试图查找此视图的引用,因为它们确实存在,但在另一个布局中,但不在activity_profile.xml中,您通过活动中的setContentView()加载。 / p>

答案 1 :(得分:0)

在错误的变量声明和 初始化。

尝试一下

替换您的秤,并用var初始化val。

如果您必须使用Java

(?=((?i)http(s)?:\/\/(?:[\w0-9](?:[\w0-9-]{0,61}[\w0-9])?\.)+[\w0-9][\w0-9-]{0,61}[\w0-9])).*

对于Kotlin

final TextView helloTextView = (TextView)findViewById(R.id.text_view_id);

您可以参考this链接以获取更多详细信息