Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 添加ImageView后,应用程序在启动时崩溃_Java_Android_Crash_Imageview - Fatal编程技术网

Java 添加ImageView后,应用程序在启动时崩溃

Java 添加ImageView后,应用程序在启动时崩溃,java,android,crash,imageview,Java,Android,Crash,Imageview,我正在运行一个带有一个ImageView的基本应用程序。它一直运行,直到我添加以下内容 ImageView gohan = findViewById(R.id.gohanView); 这些是我唯一做过的事情: 创建项目 创建了空活动 将ImageView添加到活动中 已将图像导入drawable文件夹 将图像附加到ImageView的src 运行(此时一切正常) 然后我将上面的代码添加到我的MainActivity类中,应用程序将不再运行 Java package com.example.

我正在运行一个带有一个ImageView的基本应用程序。它一直运行,直到我添加以下内容

ImageView gohan = findViewById(R.id.gohanView);
这些是我唯一做过的事情:

  • 创建项目
  • 创建了空活动
  • 将ImageView添加到活动中
  • 已将图像导入drawable文件夹
  • 将图像附加到ImageView的src
  • 运行(此时一切正常)
  • 然后我将上面的代码添加到我的MainActivity类中,应用程序将不再运行
Java

package com.example.david.dragonballz;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    ImageView gohan = findViewById(R.id.gohanView);

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

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

    <ImageView
        android:id="@+id/gohanView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="69dp"
        android:layout_marginEnd="114dp"
        android:layout_marginLeft="114dp"
        android:layout_marginRight="114dp"
        android:layout_marginStart="114dp"
        android:layout_marginTop="69dp"
        android:src="@drawable/gohan"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>


声明这一点

public ImageView gohan;
在oncreate()中添加此行

在这条线之后

 setContentView(R.layout.activity_main);
最后是您的onCreate()


现在也可以在任何地方访问此IMAGEVIEW

onCreate()
方法之前从未找到任何视图的id,因为xml布局加载在
onCreate()

onCreate()中查找id


put ImageView gohan=findViewById(R.id.gohanView);在oncreate方法after.setContentView.com内部,您可以在oncreate()中获得对任何视图的引用,谢谢!这允许它运行,但现在我无法从另一个类访问“gohan”。我不确定发生了什么变化,但我过去能够在MainActivity类中拥有ImageView,然后在MainActivity中创建类时访问它。这有意义吗?@INKALAXY,您可以在活动中将对象声明为
ImageView gohan
,然后在
onCreate
方法中分配它。通过活动中的类访问它是什么意思?你为什么要这么做?好的。所以你是说这应该是可行的:
public class main活动扩展了appcompative活动{ImageView gohan;public void gohan单击(视图){gohan.animate().alpha(0).setDuration(2000);}@Override受保护的void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ImageView gohan=findviewbyd(R.id.gohanView);}}
好的,请稍候,让我再次更新更新我的答案
gohan = (ImageView)findViewById(R.id.gohanView);
 setContentView(R.layout.activity_main);
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
    gohan = (ImageView)findViewById(R.id.gohanView);

 gohan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // do something 
           gohan.animate().alpha(0).setDuration(2000);
            }
        });
    }
setContentView(R.layout.activity_main);
gohan = (ImageView) findViewById(R.id.gohanView);