返回时返回空指针异常

NullpointerExpection returned when back pressed

我正在将值从 Activity A 发送到 Activity B 并将数据设置到视图,它工作正常但是当我按下后退按钮时它返回 nullpointerexpectiontextView.setText() 方法中。我已经实现如下:

 Intent i = getIntent();
    serialArrayList = i.getParcelableExtra("member_list");

    gridView = (GridView) findViewById(R.id.officerGrid);
    adapter = new DistrictOfficerGridAdapter(this, serialArrayList);
    gridView.setAdapter(adapter);

    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
             startActivity(new Intent(getApplicationContext(), MemberDetailsActivity.class));
            Intent in = new Intent(DistrictOfficerActivity.this, MemberDetailsActivity.class);
            in.putExtra("name", serialArrayList.getTitle());
            in.putExtra("desig", serialArrayList.getPosition());
            in.putExtra("contact", serialArrayList.getMobile());
            in.putExtra("addr", serialArrayList.getAddress());
            in.putExtra("blood", serialArrayList.getBloodGroup());
            in.putExtra("image",serialArrayList.getPhotos());
            in.putExtra("email", serialArrayList.getEmail());
            in.putExtra("desc", serialArrayList.getDesc());
            in.putExtra("website", serialArrayList.getWebsite());
            in.putExtra("land", serialArrayList.getLandline());
            startActivity(in);

        }
    });

并且从MemberDetailsActivity接收数据并实现如下:

    nam = getIntent().getStringExtra("name").toString();
        design = getIntent().getStringExtra("desig");
        contat = getIntent().getStringExtra("contact");
        addr = getIntent().getStringExtra("addr");
        blood = getIntent().getStringExtra("blood");
        image = getIntent().getStringExtra("image");
        website = getIntent().getStringExtra("website");
        email = getIntent().getStringExtra("email");
        landL = getIntent().getStringExtra("land");

   name.setText(nam.toString());
    desig.setText(design.toString());
    phoneNumber.setText(contat.toString());
    address.setText(addr.toString());
    bloodG.setText(blood.toString());
    Glide.with(getApplicationContext()).load(image).into(imag);
    web.setText(website.toString());
    emai.setText(email.toString());
    landline.setText(landL.toString());

你在这里犯了一个错误。您正在调用您的 Activity 两次,因此请删除其中一个。试试这个

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        Intent in = new Intent(DistrictOfficerActivity.this, MemberDetailsActivity.class);
        in.putExtra("name", serialArrayList.getTitle());
        in.putExtra("desig", serialArrayList.getPosition());
        in.putExtra("contact", serialArrayList.getMobile());
        in.putExtra("addr", serialArrayList.getAddress());
        in.putExtra("blood", serialArrayList.getBloodGroup());
        in.putExtra("image",serialArrayList.getPhotos());
        in.putExtra("email", serialArrayList.getEmail());
        in.putExtra("desc", serialArrayList.getDesc());
        in.putExtra("website", serialArrayList.getWebsite());
        in.putExtra("land", serialArrayList.getLandline());
        startActivity(in);

    }
});

我希望这对你有用。

你开始activity两次。

 startActivity(new Intent(getApplicationContext(), MemberDetailsActivity.class));

删除此行。每当您单击项目 activity 时都会打开两次,这意味着当您向后按时活动会添加到堆栈中,您没有从 activity 获得意图,这就是它给出空指针异常的原因。