Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.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
Android 在不同的活动中使用findviewbyid_Android_Android Layout_Android Activity - Fatal编程技术网

Android 在不同的活动中使用findviewbyid

Android 在不同的活动中使用findviewbyid,android,android-layout,android-activity,Android,Android Layout,Android Activity,如何在不同的活动中使用findViewById 现在我有一个叫做DrawingView的视图,它包含一个画布来绘制。在另一个设置活动中,我有一个按钮,允许他们选择颜色 我需要能够从单独的设置活动访问activity_main.xml中的DrawingView 当我调用findViewById时,它返回null,因为它正在搜索另一个活动中的id 有什么简单的方法可以做到这一点吗?从其他活动访问视图将是一个问题,即使您可以安排访问主活动的布局层次结构,这也不是正确的方法 处理此问题的最佳方法是在具有

如何在不同的活动中使用findViewById

现在我有一个叫做DrawingView的视图,它包含一个画布来绘制。在另一个设置活动中,我有一个按钮,允许他们选择颜色

我需要能够从单独的设置活动访问activity_main.xml中的DrawingView

当我调用findViewById时,它返回null,因为它正在搜索另一个活动中的id


有什么简单的方法可以做到这一点吗?

从其他活动访问视图将是一个问题,即使您可以安排访问主活动的布局层次结构,这也不是正确的方法

处理此问题的最佳方法是在具有DrawingView的活动中实现一个。然后,它可以响应首选项值的更改并更改DrawingView中的颜色。有关如何实现侦听器,请参阅文档


这假设您正在将颜色选择保存在SharedReferences对象中,因此它将是持久的。如果您使用内置的preferences框架,或者您可以自己编写选择,就会自动发生这种情况。如果您没有使用SharedReferences,那么@cricket_007建议使用startActivityForResult可能是一个不错的选择。

视图对象只能在可见活动上下文中访问。如果视图不可用并且尝试使用findViewByID,它将因NullPointerException而崩溃。您是否在活动\u main.xml的设置活动中使用了setContentView?这与我建议您查看的位置有关,以便从设置传回数据activity@MustansarSaeed这会改变视图远离设置,这样他们就不能再选择要改变的颜色了吗?我会的或者,如果您只是设置颜色,建议弹出一个带有放射组的对话框。这不是假设使用了PreferenceActivity吗?@cricket_007-不一定。它仅假设颜色选择保存在共享首选项中。当然,这可能不是一个好的假设。我会相应地更新答案。谢谢。如果您查看该用户的其他问题的注释中的链接,您可以看到更多的代码using@TedHopp感谢startActivityforResult为我工作!