Android:设置在主java类中可见的表行
我有一个Tab1类和一个主类 下面的Tab1类-将表格行设置为不可见:Android:设置在主java类中可见的表行,java,android,Java,Android,我有一个Tab1类和一个主类 下面的Tab1类-将表格行设置为不可见: public class Tab1 extends Fragment { View v; TableRow tr; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
public class Tab1 extends Fragment {
View v;
TableRow tr;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
v =inflater.inflate(R.layout.tab_1,container,false);
tr = (TableRow)v.findViewById(R.id.tb1_r1);
tr.setVisibility(View.INVISIBLE);
tr = (TableRow)v.findViewById(R.id.tb1_r2);
tr.setVisibility(View.VISIBLE);
tr = (TableRow)v.findViewById(R.id.tb1_r3);
tr.setVisibility(View.INVISIBLE);
tr = (TableRow)v.findViewById(R.id.tb1_r4);
tr.setVisibility(View.INVISIBLE);
return v;
}
}
在主要活动中:
我有一个弹出窗口,其中包含一个按钮,当它被按下时,它将设置一个表行可见。现在,我正试图将第一个表行设置为可见
public void BtnAddContact(View view) {
Toast.makeText(getApplication(), "New Contact Added", Toast.LENGTH_SHORT ).show();
popupWindow_addcontact.dismiss();
LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View view1 = inflater.inflate(R.layout.tab_1, null);
TableRow tr = (TableRow)view1.findViewById(R.id.tb1_r1);
tr.setVisibility(View.VISIBLE);
}
它会运行,不会显示错误消息。将显示toast消息,但表行不可见。您能告诉我为什么表格行不可见吗?我相信这与不访问Tab1Java类有关 关于
BtnAddContact()
方法:
不要膨胀视图并将其可见性设置为可见-您需要在片段中找到此视图,然后设置其可见性:
yourTab1Fragment.getView().findViewById(R.id.tb1_r1).setVisibility(View.VISIBLE);
或者,如果您只有这1个片段,则只需跳过这2行:
直接拨打:
TableRow tr = (TableRow) findViewById(R.id.tb1_r1);
您是否建议在我的主java类中使用onCreateView()方法。我不确定如何在我的片段中找到视图。@akalanta我的建议是针对
BtnAddContact
方法。剩下的代码就可以了。请看更新的答案。所以我做的是:Tab1 tb1=new Tab1();tb1.getView().findViewById(R.id.tb1_r1).setVisibility(View.VISIBLE);我得到的错误是:java.lang.NullPointerException:尝试在null对象上调用虚拟方法“android.view.view android.view.view.findViewById(int)”reference@akalanta请检查提到的第二种方法。我最终将使用Tab1和Tab2。那么我会使用你提到的第一种方法吗
TableRow tr = (TableRow) findViewById(R.id.tb1_r1);