应用在按下按钮时崩溃,显示 "Attempt to invoke virtual method"

App crashes on Button Press stating "Attempt to invoke virtual method"

我有一个 android 应用程序,它应该在按下按钮时打开 activity,但是当我点击它时,应用程序崩溃并显示 "Attempt to invoke virtual method"。这是我的代码。

MainClass.java

public class MainActivity extends ActionBarActivity {
Button Notify;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Notify = (Button)findViewById(R.id.notify);

        Notify.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

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


        }
    });
    }

我的另一个activityclass

DisplayPush.java

public class DisplayPush extends Activity {

@Override
public void onBackPressed(){
   Intent myIntent = new Intent(DisplayPush.this,MainActivity.class);
   startActivity(myIntent);
  //  overridePendingTransition(R.anim.from_middle, R.anim.to_middle);
    finish();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.notification);

    TextView notification_title = (TextView) findViewById(R.id.title);
    TextView notification_message = (TextView) findViewById(R.id.message);

    ParseAnalytics.trackAppOpened(getIntent());

    Intent intent = getIntent();
    Bundle extras = intent.getExtras();
    String jsonData = extras.getString("com.parse.Data");

    try{
        JSONObject notification = new JSONObject(jsonData);
       // String title = notification.getString("push_hash");
        String message = notification.getString("alert");

      //  notification_title.setText(title);
        notification_message.setText(message);
    }
    catch(JSONException e){
        Toast.makeText(getApplicationContext(), "Something went wrong with the notification", Toast.LENGTH_SHORT).show();
    }

}

我已经在清单中定义了活动。 这是 logcat.

03-21 06:51:35.157: E/AndroidRuntime(3042): FATAL EXCEPTION: main
03-21 06:51:35.157: E/AndroidRuntime(3042): Process: hasan.parsereceiveandshow, PID: 3042
03-21 06:51:35.157: E/AndroidRuntime(3042): java.lang.RuntimeException: Unable to start activity ComponentInfo{hasan.parsereceiveandshow/hasan.parsereceiveandshow.DisplayPush}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference

如日志:

Bundle.getString(java.lang.String)' on a null object reference

因为extrasnull.

不发送包含 com.parse.Data 键的捆绑包,其 Intent 用于在单击按钮时启动 DisplayPush Activity。

What should i edit in code ?

Notify 按钮点击时使用 com.parse.Data 键发送数据:

Intent intent = new Intent(MainActivity.this, DisplayPush.class);
intent.putExtra("com.parse.Data","String text");
startActivity(intent);

并且在从 Bundle 获取值之前添加空值检查:

if(extras !=null)
  if(extras.containsKey("com.parse.Data"))
    String jsonData = extras.getString("com.parse.Data");

并按照评论中的说明全局定义 String jsonData;

异常表示您正在尝试对空引用调用 getString 方法。在 DisplayPush 中,您从 intent 中获取 Bundle 对象,该对象为空,因为您没有在 MainActivity class 中的 onClick 方法中放入任何对象。