Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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 无法从“我的活动”访问视图';什么方法?(空对象引用)_Java_Android_Android Studio - Fatal编程技术网

Java 无法从“我的活动”访问视图';什么方法?(空对象引用)

Java 无法从“我的活动”访问视图';什么方法?(空对象引用),java,android,android-studio,Java,Android,Android Studio,我有一个名为TouchImageView的类,它扩展了ImageView,它基本上实现了一个类似于Android“照片”中的图像查看器 当用户单击TouchImageView时,我希望“activity_viewimage”中的另外两个视图通过调用主activityViewImageActivity中的方法来更改可见性: @Override public boolean onSingleTapConfirmed(MotionEvent e) { ViewImage

我有一个名为TouchImageView的类,它扩展了ImageView,它基本上实现了一个类似于Android“照片”中的图像查看器

当用户单击TouchImageView时,我希望“activity_viewimage”中的另外两个视图通过调用主activityViewImageActivity中的方法来更改可见性:

@Override
    public boolean onSingleTapConfirmed(MotionEvent e)
    {
        ViewImageActivity viewImageActivity= new ViewImageActivity();
        viewImageActivity.toggleTopBottomViews();
    }
现在在ViewImageActivity中

错误堆栈:

java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.getVisibility()' on a null object reference
                                                                                  at com.example.zigo.photoencryption.ViewImageActivity.toggleTopBottomViews(ViewImageActivity.java:273)
                                                                                  at com.example.zigo.photoencryption.TouchImageView$GestureListener.onSingleTapConfirmed(TouchImageView.java:764)
                                                                                  at android.view.GestureDetector$GestureHandler.handleMessage(GestureDetector.java:300)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                  at android.os.Looper.loop(Looper.java:148)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

您永远不会通过“新建”创建活动。它无法正确初始化,活动的初始化仅由框架响应启动活动的请求来处理。即使你可以通过new创建一个活动,它也不会帮助你,你会创建一个具有不同视图的新活动。(这里您得到的是NPE,因为onCreate根本没有被调用,框架没有调用,因为它没有正确启动,您也没有调用)

相反,您应该做的是在视图中传递要切换到检测器的可见性,以便它可以直接执行,或者让创建手势检测器的活动在回调中传递并自己执行


这里有一种可能是您真的不理解活动是什么-如果您认为可以通过创建活动随时添加视图,那么您需要返回到关于活动是什么的教程。

感谢您的回复。您将如何传递视图?在topView成为touchimageview类中的公共变量后,我移动了所有内容,并尝试在onCreate(findViewById(R.id.touchimageview)中进行操作。topView=findViewById(R.id.topView),但这不起作用
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.getVisibility()' on a null object reference
                                                                                  at com.example.zigo.photoencryption.ViewImageActivity.toggleTopBottomViews(ViewImageActivity.java:273)
                                                                                  at com.example.zigo.photoencryption.TouchImageView$GestureListener.onSingleTapConfirmed(TouchImageView.java:764)
                                                                                  at android.view.GestureDetector$GestureHandler.handleMessage(GestureDetector.java:300)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                  at android.os.Looper.loop(Looper.java:148)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)