java - Android - fragment 中的 java.lang.NullPointerException

标签 java android android-fragments post

我是新人,我想开发一个连接到服务器的应用程序,然后显示底部栏。 为此,我使用一个 fragment (因为接下来我将有更多 fragment ),当我单击按钮时,将连接并设置底部栏可见。 我可以连接到服务器,并获得响应,但我无法显示底部栏,我有此错误:

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void com.roughike.bottombar.BottomBar.setVisibility(int)”

我知道它在这条线上:menu.Connecté(c.getString("id"));但我不知道如何解决它..

你能帮我吗?谢谢
这是我的代码:

public class FragmentConnexion extends Fragment {

    String ip = "http://MYIP/php";
    MainActivity menu = new MainActivity();
    TextView identifient,motdepasse;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View myView = inflater.inflate(R.layout.connexion, container, false);
        identifient = (TextView) myView.findViewById(identifiant);
        motdepasse = (TextView) myView.findViewById(mdp);

        Button connecte = (Button) myView.findViewById(button);
        connecte.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Connexion();
            }
        });
        return myView;
    }

    public void Connexion(){
        final String mPseudo= identifient.getText().toString();
        final String mMdp = motdepasse.getText().toString();
        final HttpGetRequest requete = new HttpGetRequest();

        new Thread(new Runnable() {
            @RequiresApi(api = Build.VERSION_CODES.KITKAT)
            @Override
            public void run() {
                requete.execute(ip+"/utilisateur/affichage_id.php?pseudo="+mPseudo+"&mdp="+mMdp);
                try {
                    if(requete.get() != null){
                        JSONObject jsonObj = new JSONObject(requete.get());
                        JSONArray jSon = jsonObj.getJSONArray("valeurs");
                        for (int i = 0; i < jSon.length(); i++) {
                            JSONObject c = jSon.getJSONObject(i);
                            if (!Objects.equals(c.getString("id"), "null")){
                                Log.i("ID",c.getString("id"));
                                menu.Connecté(c.getString("id"));
                            }
                        }
                    }
                }
                catch (InterruptedException | ExecutionException | JSONException e) {
                    e.printStackTrace();
                }
            }
        }).start();

    }
}

主要 Activity :

public class MainActivity extends AppCompatActivity {

String identifiant;
BottomBar bottombar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    BottomBar bottombar = (BottomBar) findViewById(R.id.bottomBar);
    bottombar.setVisibility(View.INVISIBLE);
    bottombar.setOnTabSelectListener(new OnTabSelectListener() {
        @Override
        public void onTabSelected(@IdRes int tabId) {
            if (tabId == R.id.tab_reveil) {

                Log.i("Reveil","Selectionné");
            }

            if (tabId == R.id.tab_whiz) {
                Log.i("Whiz","Selectionné");
            }

            if (tabId == R.id.tab_param) {
                Log.i("Paramètre","Selectionné");
            }
        }
    });


}

public void Connecté(String id){
    identifiant = id;
    bottombar.setVisibility(View.VISIBLE);
}

最佳答案

您应该使用((MainActivity)getActivity).Connect(c.getString("id"))
并将 BottomBar Bottombar = (BottomBar) findViewById(R.id.bottomBar); 更改为 bottombar = (BottomBar) findViewById(R.id.bottomBar);

fragment 中的菜单是一个new MainActivity(),因此bottombarnull

关于java - Android - fragment 中的 java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42295349/

相关文章:

java - 在 java 中使用 ImageIcon 类和 JLabels 创建 .jar 文件

java - Jhipster 或 Spring Data JPA

Android - Firebase 通知不工作

android - 如果不更改 colorAccent,则无法更改 MaterialButton 上的背景颜色

java - 返回方程 x1 + x2 + x3 = num 的解数

java - java中的Neo4j Cypher match()。查找连接的节点

android - 如何禁止在 expo/react-native 中使用平板电脑?

android - Viewpager 和 Fragment 问题

java - 我如何从 Activity 中打开 android.support.v4.app.Fragment

android - 如何从android中的子 fragment 更新 fragment 中的 View