我是新人,我想开发一个连接到服务器的应用程序,然后显示底部栏。 为此,我使用一个 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()
,因此bottombar
为null
关于java - Android - fragment 中的 java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42295349/