Java 添加ImageView后,应用程序在启动时崩溃
我正在运行一个带有一个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 gohan = findViewById(R.id.gohanView);
这些是我唯一做过的事情:
- 创建项目
- 创建了空活动
- 将ImageView添加到活动中
- 已将图像导入drawable文件夹
- 将图像附加到ImageView的src
- 运行(此时一切正常)
- 然后我将上面的代码添加到我的MainActivity类中,应用程序将不再运行
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);