java - 无法从 Bundle 中获取字符串

标签 java android bundle

登录成功后,我创建了一个新 Activity 。但是当我启动应用程序时,应用程序会在 5 秒内崩溃并显示消息

Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference

错误来自这里

name.setText(" "+bundle.getString("name"));

public class LoginActivity extends Activity {

    public ImageView bgLogo;

    Button login_button;
    EditText Username, Password;
    String username, password;
    String login_url = "http://192.168.0.19/login.php";
    AlertDialog.Builder builder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE); // Enlever la barre bleue
        setContentView(R.layout.activity_login);

        initExit ();

        builder = new AlertDialog.Builder(LoginActivity.this);
        login_button = (Button) findViewById(R.id.bLogin);
        Username = (EditText) findViewById(R.id.etUsername);
        Password = (EditText) findViewById(R.id.etPassword);

        login_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                username = Username.getText().toString();
                password = Password.getText().toString();

                if (username.equals("") || password.equals("")) {

                    builder.setTitle("Mince une erreur...");
                    displayAlert("Veuillez entrer un username et un mot de passe correct...");
                }

                else {

                    StringRequest stringRequest = new StringRequest(Request.Method.POST, login_url,
                            new Response.Listener<String>() {
                                @Override
                                public void onResponse(String response) {

                                    JSONArray jsonArray = null;
                                    try {
                                        jsonArray = new JSONArray(response);
                                        JSONObject jsonObject = jsonArray.getJSONObject(0);
                                        String code = jsonObject.getString("code");

                                        if (code.equals("login_failed")) {

                                            builder.setTitle("Erreur d'authentification");
                                            displayAlert(jsonObject.getString("message"));
                                        }

                                        else {

                                            Intent intent = new Intent (LoginActivity.this, UserAreaActivity.class);
                                            Bundle bundle = new Bundle();
                                            bundle.putString("name", jsonObject.getString("name"));
                                            intent.putExtras(bundle);
                                            startActivity(intent);
                                        }
                                    } catch (JSONException e) {
                                        e.printStackTrace();
                                    }

                                }
                            }, new Response.ErrorListener() {

                        @Override
                        public void onErrorResponse(VolleyError error) {

                            Toast.makeText(LoginActivity.this, "Erreur", Toast.LENGTH_LONG).show();
                            error.printStackTrace();

                        }
                    })
                    {
                        @Override
                        protected Map<String, String> getParams() throws AuthFailureError {

                            Map <String, String> params = new HashMap<String, String>();
                            params.put("user_name", username);
                            params.put("password", password);
                            return params;
                        }
                    };

                    MySingleton.getInstance(LoginActivity.this).addToRequestque(stringRequest);
                }
            }
        });
    }

    private void initExit() {

        bgLogo = (ImageView) findViewById(R.id.bgLogo1);
        bgLogo.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick (View v) {

                Intent intent = new Intent (LoginActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });
    }

    public void displayAlert (String message) {

        builder.setMessage(message);
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Username.setText("");
                Password.setText("");
            }
        });

        AlertDialog alertDialog = builder.create();
        alertDialog.show();
    }

    @Override
    public void onBackPressed() {
        // do nothing.
        Intent intent = new Intent(LoginActivity.this, MainActivity.class);
        startActivity(intent);
        return;
    }
}

public class UserAreaActivity extends Activity {

    public ImageView bgNet;
    public ImageView bgChat;
    public ImageView bgStats;
    public ImageView bgGo;
    public Button bLogout;

    TextView name;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE); // Enlever la barre bleue
        setContentView(R.layout.activity_user_area);

        name = (TextView) findViewById(R.id.name);

        Bundle bundle = getIntent().getExtras();
        name.setText(" "+bundle.getString("name"));

        initGoHome ();
        initPlay ();
        initGoStats ();
        initGoChat ();
        buttonLogout ();
    }

    @Override
    public void onBackPressed() {
        return;
    }

    private void initGoHome () {

        bgNet = (ImageView) findViewById(R.id.bgNet);
        bgNet.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick (View v) {

                Intent intent = new Intent (UserAreaActivity.this, HomeActivity.class);
                startActivity(intent);
            }
        });
    }

    private void initPlay () {

        bgGo = (ImageView) findViewById(R.id.bgGo);
        bgGo.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick (View v) {

                Intent intent = new Intent (UserAreaActivity.this, PlayActivity.class);
                startActivity(intent);
            }
        });
    }

    private void initGoStats () {

        bgStats = (ImageView) findViewById(R.id.bgStats);
        bgStats.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick (View v) {

                Intent intent = new Intent (UserAreaActivity.this, StatsActivity.class);
                startActivity(intent);
            }
        });
    }

    private void initGoChat () {

        bgChat = (ImageView) findViewById(R.id.bgChat);
        bgChat.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick (View v) {

                Intent intent = new Intent (UserAreaActivity.this, ChatActivity.class);
                startActivity(intent);
            }
        });
    }

    private void buttonLogout () {

        bLogout = (Button) findViewById(R.id.bLogout);
        bLogout.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick (View v) {

                Intent intent = new Intent (UserAreaActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });
    }
}

最佳答案

替换这段代码:

    Bundle bundle = getIntent().getExtras();
    name.setText(" "+bundle.getString("name"));

Bundle bundle = getIntent().getExtras();
if (bundle != null)
{
    name.setText(" "+bundle.getString("name"));
}

您的问题将得到解决。

关于java - 无法从 Bundle 中获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41381102/

相关文章:

java - 带有表情语言的椭圆形

java - 拦截器被调用2次以上

android - 以编程方式为 TextView 布局边距

android - 如何使用 Bundle 发送数组?

javascript - 将 JavaScript 文件转换为 dll 文件

java - Java 支持结构吗?

java - 向新 Activity 发送文本

android - 无法在 android studio 2.1.1 中解析符号 "ActionBarActivity"

java - DialogFragment与Fragment之间的通信

android - 如果父 Activity 包始终具有传递给 Fragment 的对象,那么 Fragment 包的用途是什么?