我对Android和Java编码一般都很陌生,所以如果我不理解基本概念,请耐心等待。这只是一个测试,看看是否有效,所以最初可能没有没有任何意义。
我有两个活动,主要和其他。 其他活动有一个imageButton,其可见性最初设置为不可见。 创建MainActivity时,它应该在Other活动中查找该imageButton,并将其视图设置为可见。
虽然在调试时,我得到的只是nullPointerException,因为按钮的值为null。如何让它引用按钮?
主要活动的一部分:
public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pstep();
}
public void pstep() {
int pstep = 0;
ImageButton panfav = (ImageButton) findViewById(R.id.favpancake);
panfav.setVisibility(View.VISIBLE);
}
其他活动的一部分:
public class navfav extends AppCompatActivity {
ImageButton panfav = (ImageButton) findViewById(R.id.favpancake);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.navfav);
}
public void fab(View v){
ImageButton panfav = (ImageButton) findViewById(R.id.favpancake);
panfav.setVisibility(View.VISIBLE);
}
链接到其他活动的XML:
<ImageButton
android:id="@+id/favpancake"
android:layout_width="wrap_content"
android:layout_height="137dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/imageView3"
android:background="@android:color/background_dark"
android:contentDescription="@string/nav_cook_dish"
android:onClick="fab"
android:scaleType="centerCrop"
android:src="@drawable/dishpancake"
android:visibility="invisible" />
日志:
java.lang.NullPointerException: Attempt to invoke virtual method 'void
android.widget.ImageButton.setVisibility(int)' on a null object reference
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method
'void android.widget.ImageButton.setVisibility(int)' on a null object reference
at com.p2.rookie.MainActivity.pstep(MainActivity.java:23)
at com.p2.rookie.MainActivity.onCreate(MainActivity.java:16)
拍摄如果我错过了你需要使用的任何东西,我会尽我所能提供:) 最好
答案 0 :(得分:0)
一个活动可以而且不应该引用其他活动中的元素。
如果你打电话给&#39; setContentView&#39;使用布局文件,您只能引用该布局文件中的视图。
尝试告诉我们您尝试实现的目标,并且我们可以帮助您改进代码。
答案 1 :(得分:0)
(代表OP发布)。
在其他地方阅读其他一些东西,我认为现在有意义了!我不是在更改布局/页面时创建新的意图和startActivity',而是将setContentView设置为新的布局/页面,并在一个活动中收集来自不同活动的所有方法 - 我觉得这个失败的基本原理是什么? ;)
然后所有的观点和方法都可以相互引用。