【问题标题】:getting null Java Android Studio [duplicate]获取 null Java Android Studio [重复]
【发布时间】:2021-05-07 00:13:00
【问题描述】:

当我使用意图在两个活动之间传递值时出现错误。 “原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'void android.widget.TextView.setText(java.lang.CharSequence)'”

第一个活动意图代码

 private void add() {
    String name = nameAdd.getText().toString();
    String date = dateAdd.getText().toString();
    Intent intent = new Intent(this,Anniversary.class);
    intent .putExtra(NAME,name);
    intent .putExtra(DATE,date);
    startActivity(intent);
}

我在 .setText 中得到错误的第二个活动

private void add() {
    Intent intent = getIntent();
    String name = intent.getStringExtra(Add.NAME);
    String date = intent.getStringExtra(Add.DATE);

    Datetxt.setText(date);   // error here
    Nametxt.setText(name);   // and here
}

【问题讨论】:

    标签: java android-studio android-intent


    【解决方案1】:

    第一个活动的所有代码

    public class Add extends AppCompatActivity {
    
    private TextView dateAdd, nameAdd;
    private List<String> namesList;
    public static final String NAME = "name";
    public static final String DATE = "date";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add);
        namesList = new ArrayList<String>();
        dateAdd = findViewById(R.id.addDateAnn);
        nameAdd = findViewById(R.id.nameAddtxt);
        Button save = findViewById(R.id.addBtn);
        
        save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                add();
            }
        });
    
    
        Calendar calendar = Calendar.getInstance();
    
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        dateAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DatePickerDialog datePickerDialog = new DatePickerDialog(
                        Add.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                        String sDate = dayOfMonth + "/" + month + "/" + year;
                        dateAdd.setText(sDate);
                    }
                }, year,month,day
                );
                datePickerDialog.show();
            }
        });
        nameAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    showCustomDialog();
            }
        });
        Button cancel = findViewById(R.id.cancleBtn);
        cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               finish();
            }
        });
    }
    
    private void showCustomDialog() {
         Dialog dialog = new Dialog(Add.this);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(true);
        dialog.setContentView(R.layout.add_name_dialog);
    
        EditText addName = dialog.findViewById(R.id.editTextDialog);
        Button submitBtn = dialog.findViewById(R.id.addNameDialogBtn);
    
        submitBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name = addName.getText().toString();
                dialog.dismiss();
                nameAdd.setText(name);
            }
        });
        dialog.show();;
    }
    private void add() {
        String name = nameAdd.getText().toString();
        String date = dateAdd.getText().toString();
        Intent intent = new Intent(this,Anniversary.class);
        intent .putExtra(NAME,name);
        intent .putExtra(DATE,date);
        startActivity(intent);
    }
    

    }

    第二个活动的所有代码

    public class Anniversary extends AppCompatActivity {
    
    private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private RecyclerView.Adapter adapter;
    TextView Nametxt;
    TextView Datetxt;
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_anniversary);
        Nametxt = findViewById(R.id.annviersaryNametxt);
        Datetxt = findViewById(R.id.annviersaryDatetxt);
    
    
        recyclerView = findViewById(R.id.anniversaryRecylerView);
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);
    
        adapter = new AnniversaryAdapter();
        recyclerView.setAdapter(adapter);
    
    
        Toolbar toolbar = findViewById(R.id.toolbar);
        toolbar.setTitle(getResources().getString(R.string.app_name));
    
        //define the recyclerview
        RecyclerView recyclerView = findViewById(R.id.anniversaryRecylerView);
        setSupportActionBar(toolbar);
    
        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                StartNewActivity();
            }
        });
        add();
    
    }
    
    
    
    // start new activity method
    public void StartNewActivity(){
        Intent intent = new Intent(this,Add.class);
        startActivity(intent);
    }
    private void add() {
        Intent intent = getIntent();
        String name = intent.getStringExtra(Add.NAME);
        String date = intent.getStringExtra(Add.DATE);
    
        Datetxt.setText(date);
        Nametxt.setText(name);
    }
    

    }

    【讨论】:

      猜你喜欢
      • 2021-12-20
      • 1970-01-01
      • 2020-10-02
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      • 2015-02-24
      相关资源
      最近更新 更多