尝试在Android中发送时收到空错误

时间:2019-05-05 21:15:59

标签: java android android-intent

我花了很多时间研究溢出并尽我所能解决这个问题,但我只是不知道自己缺少什么。我在cardview中有一个recyclerview,它显示了数据库中数据的3个属性。每张卡显示不同的行。我正在尝试这样做,以便当用户单击卡片时,它会打开一个新活动,然后将有关该卡片的信息通过意图传递给新活动,以便可以在其中填充数据。

每次我点击其中一张卡时,它都会因以下错误而崩溃:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference"

错误指向代码底部的区域,我添加了注释以显示其位置。因此,由于某种原因,接收到的意图似乎是空的

这是recyclerview的XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:tag="cards main container">

<androidx.cardview.widget.CardView
    android:id="@+id/card_view"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
   card_view:cardCornerRadius="6dp"
    card_view:cardElevation="6dp">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:id="@+id/flaredesc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:background="@android:color/holo_orange_light"
            android:layout_weight="1"/>

        <TextView
            android:id="@+id/flarearea"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:background="@android:color/holo_orange_light"
            android:layout_weight="1"/>

        <TextView
            android:id="@+id/flaredate"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:background="@android:color/holo_orange_light"
            android:layout_weight="1"/>

    </LinearLayout>
</androidx.cardview.widget.CardView>

这是我的适配器类中的代码:

        public FlareViewHolder(View itemView) {
        super(itemView);
        flareDesc = (TextView)itemView.findViewById(R.id.flaredesc);
        flareArea = (TextView)itemView.findViewById(R.id.flarearea);
        flareDate = (TextView)itemView.findViewById(R.id.flaredate);


        CardView cardview;
        cardview = (CardView)itemView.findViewById(R.id.card_view);

            cardview.setOnClickListener(new View.OnClickListener() {
                @Override public void onClick(View view) {

                    Intent i = new Intent (view.getContext(), CurrentFlareActivity.class);
                    i.putExtra("flareDes",flareDesc.getText().toString());
                    i.putExtra("flareAre",flareArea.getText().toString());
                    i.putExtra("flareDat",flareDate.getText().toString());

                    view.getContext().startActivity(i);
                }
            });
    }
}

最后这是新活动的代码(请参见错误注释):

public class CurrentFlareActivity extends AppCompatActivity {
Intent result = getIntent();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_current_flare);

    TextView SelectedFlareDesc;
    TextView SelectedFlareArea;
    TextView SelectedFlareDate;

    SelectedFlareDesc = (TextView)findViewById(R.id.current_desc);
    SelectedFlareArea = (TextView)findViewById(R.id.current_area);
    SelectedFlareDate = (TextView)findViewById(R.id.current_date);

    String Description = result.getStringExtra("flareDes"); //this is where the error comes up
    String Area = result.getStringExtra("flareAre");
    String Date = result.getStringExtra("flareDat");

    SelectedFlareDesc.setText(Description);
    SelectedFlareArea.setText(Area);
    SelectedFlareDate.setText(Date);
}

0 个答案:

没有答案