java - fragment 集可见性空指针

标签 java android android-fragments

我在处理 fragment 时遇到问题。

我在 Activity 1 中。我向该 Activity 添加 fragment 并调用方法。 然后这个方法调用 fragment 类中的其他方法。 在这个方法中,我想要button.setVisibility(View.VISIBLE),但它抛出了NullPointer。

代码:

自己的类容器:

public class Container
{
    private ImageButton ib;
    private int stan;
    private int wartosc;

    public Container(ImageButton ib, int stan, int wartosc)
    {
        this.ib = ib;
        this.stan = stan;
        this.wartosc = wartosc;
    }

    public int getStan()
    {
        return stan;
    }

    public int getWartosc()
    {
        return wartosc;
    }

    public void setWartosc(int wartosc)
    {
        this.wartosc = wartosc;
    }

    public void setStan(int stan)
    {
        this.stan = stan;
    }

    public ImageButton getButton()
    {
        return ib;
    }
}

fragment :

ImageButton b1;
Container button1;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState)
{
    V = inflater.inflate(R.layout.face_fragment, container, false);


    b1 = (ImageButton) getActivity().findViewById(R.id.nr1);

    // i also tried something like that:
    b1 = (ImageButton) V.findViewById(R.id.nr1);


    context = V.getContext();

    addResources();

    button1 = new Container(b1, 1, 0);

    return V;
}

以及抛出空指针的方法 fragment :

public void setVisible()
{       
    if(all)
    {
        button1.getButton().setVisibility(View.VISIBLE); //here nullpointer

请帮帮我,我不知道......

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000"
tools:context=".FaceFragment"
android:weightSum="20"
android:orientation="vertical" >

<LinearLayout
    android:layout_weight="10"
    android:weightSum="30"
    android:layout_width="fill_parent"
    android:layout_height="0dp" >

    <ImageButton
        android:contentDescription="@string/app_name"
        android:id="@+id/nr1"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_margin="5dp"
        android:layout_weight="10"
        android:adjustViewBounds="true"
        android:background="@null"
        android:onClick="button1Click"
        android:scaleType="fitCenter"
        android:src="@drawable/domyslnie" />

     <ImageButton
         android:contentDescription="@string/app_name"
        android:id="@+id/nr2"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_margin="5dp"
        android:layout_weight="10"
        android:adjustViewBounds="true"
        android:background="@null"
        android:onClick="button2Click"
        android:scaleType="fitCenter"
        android:src="@drawable/domyslnie" />

      <ImageButton
          android:contentDescription="@string/app_name"
        android:id="@+id/nr3"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_margin="5dp"
        android:layout_weight="10"
        android:adjustViewBounds="true"
        android:background="@null"
        android:onClick="button3Click"
        android:scaleType="fitCenter"
        android:src="@drawable/domyslnie" />

</LinearLayout>

<LinearLayout
    android:layout_weight="10"
    android:weightSum="30"
    android:layout_width="fill_parent"
    android:layout_height="0dp">

    <ImageButton
        android:contentDescription="@string/app_name"
        android:id="@+id/nr4"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_margin="5dp"
        android:layout_weight="10"
        android:adjustViewBounds="true"
        android:background="@null"
        android:onClick="button4Click"
        android:scaleType="fitCenter"
        android:src="@drawable/domyslnie" />

     <ImageButton
         android:contentDescription="@string/app_name"
        android:id="@+id/nr5"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_margin="5dp"
        android:layout_weight="10"
        android:adjustViewBounds="true"
        android:background="@null"
        android:onClick="button5Click"
        android:scaleType="fitCenter"
        android:src="@drawable/domyslnie" />

      <ImageButton
        android:contentDescription="@string/app_name"
        android:id="@+id/nr6"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_margin="5dp"
        android:layout_weight="10"
        android:adjustViewBounds="true"
        android:background="@null"
        android:onClick="button6Click"
        android:scaleType="fitCenter"
        android:src="@drawable/domyslnie" />

</LinearLayout>

</LinearLayout>

日志:

11-06 18:58:20.289: E/AndroidRuntime(24368): FATAL EXCEPTION: main
11-06 18:58:20.289: E/AndroidRuntime(24368): java.lang.IllegalStateException: Could not execute     method of the activity
11-06 18:58:20.289: E/AndroidRuntime(24368):    at android.view.View$1.onClick(View.java:3660)
1-06 18:58:20.289: E/AndroidRuntime(24368):     at android.view.View.performClick(View.java:4162)
11-06 18:58:20.289: E/AndroidRuntime(24368):    at android.view.View$PerformClick.run(View.java:17152)
11-06 18:58:20.289: E/AndroidRuntime(24368):    at android.os.Handler.handleCallback(Handler.java:615)
11-06 18:58:20.289: E/AndroidRuntime(24368):    at android.os.Handler.dispatchMessage(Handler.java:92)
11-06 18:58:20.289: E/AndroidRuntime(24368):    at android.os.Looper.loop(Looper.java:137)
11-06 18:58:20.289: E/AndroidRuntime(24368):    at android.app.ActivityThread.main(ActivityThread.java:4867)
11-06 18:58:20.289: E/AndroidRuntime(24368):    at java.lang.reflect.Method.invokeNative(Native Method)
11-06 18:58:20.289: E/AndroidRuntime(24368):    at java.lang.reflect.Method.invoke(Method.java:511)
11-06 18:58:20.289: E/AndroidRuntime(24368):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
11-06 18:58:20.289: E/AndroidRuntime(24368):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
11-06 18:58:20.289: E/AndroidRuntime(24368):    at dalvik.system.NativeStart.main(Native Method)
11-06 18:58:20.289: E/AndroidRuntime(24368): Caused by: java.lang.reflect.InvocationTargetException
11-06 18:58:20.289: E/AndroidRuntime(24368):    at java.lang.reflect.Method.invokeNative(Native Method)
11-06 18:58:20.289: E/AndroidRuntime(24368):    at java.lang.reflect.Method.invoke(Method.java:511)
11-06 18:58:20.289: E/AndroidRuntime(24368):    at android.view.View$1.onClick(View.java:3655)
11-06 18:58:20.289: E/AndroidRuntime(24368):    ... 11 more
11-06 18:58:20.289: E/AndroidRuntime(24368): Caused by: java.lang.NullPointerException
11-06 18:58:20.289: E/AndroidRuntime(24368):    at pl.brysp.game.speedsquare.FaceFragment.setVisible(FaceFragment.java:189)
11-06 18:58:20.289: E/AndroidRuntime(24368):    at pl.brysp.game.speedsquare.FaceFragment.setRemember(FaceFragment.java:142)
11-06 18:58:20.289: E/AndroidRuntime(24368):    at pl.brysp.game.speedsquare.Game.start(Game.java:63)
11-06 18:58:20.289: E/AndroidRuntime(24368):    ... 14 more

最佳答案

getActivity().findViewById 不适用于 onCreateView,因为 View 尚未附加。

改用V.findViewById

enter image description here

关于java - fragment 集可见性空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26785843/

相关文章:

android - 我收到 Caused by : android. view.InflateException : Binary XML file line #32: Error inflating class androidx. fragment.app.FragmentContainerView

android - 操作栏检测 fragment 中的后退按钮单击

java - 创建数组对象和用花括号分配数组有什么区别?

java - 从一个文件读取一个字节 block 并写入另一个文件直到读取所有 block ?

java - 如何使用 java 或 JSP 在 SQL 中的时间戳数据类型列中插入值

android - 在 map 上标记位置名称?

java - 从内存中为 java 进程获取 hashmap 的转储

Android,在谷歌地图上绘制路线

Android Studio 无法直接或作为 Gradle 项目导入我的 Eclipse 项目

android - 无法解析在具有兼容包 v4 的 Android 2.3.3 上运行的 FragmentActivity