空对象引用上的void android.view.view.setvisibility(int)

dfuffjeb  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(270)

我搜索了每个目录,我没有看到问题,请帮助我。
blockquoteprocess:原因:java.lang.nullpointerexception:尝试在com.example.projectmanagement.wallet.createcashactivity.setvieworupdatewallet(createcashactivity)的空对象引用上调用虚拟方法“void android.view.view.setvisibility(int)”。java:58)在com.example.projectmanagement.wallet.createcashactivity.oncreate(createcashactivity)。java:46) 
我的密码是:
公共类createcashactivity扩展了appcompatactivity{

private EditText inputWalletTitle, inputWalletSubtitle, inputWalletText;

private Wallet alreadyAvailableWallet;

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

    ImageView imageBack = findViewById(R.id.imageBack);
    imageBack.setOnClickListener(v -> onBackPressed());

    inputWalletTitle = findViewById(R.id.inputWalletTitle);
    inputWalletSubtitle = findViewById(R.id.inputWalletSubtitle);
    inputWalletText = findViewById(R.id.inputWalletText);

    Button save_btn = findViewById(R.id.save_btn);
    save_btn.setOnClickListener(v -> saveWallet());

    ImageView imageSave = findViewById(R.id.imageSave);
    imageSave.setOnClickListener(v -> saveWallet());

    if (getIntent().getBooleanExtra("isViewOrUpdate", false)) {
        alreadyAvailableWallet = (Wallet) getIntent().getSerializableExtra("wallet");
        setViewOrUpdateWallet();
    }

}

private void setViewOrUpdateWallet() {
    inputWalletTitle.setText(alreadyAvailableWallet.getTitle());
    inputWalletSubtitle.setText(alreadyAvailableWallet.getSubtitle());
    inputWalletText.setText(alreadyAvailableWallet.getWalletText());

    if (alreadyAvailableWallet != null) {
        this.findViewById(R.id.layoutDeleteWallet).setVisibility(View.VISIBLE);
    }
}

private void saveWallet() {
    if (inputWalletTitle.getText().toString().trim().isEmpty()) {
        Toast.makeText(this, "Uzupełnij kwotę oraz walutę!", Toast.LENGTH_SHORT).show();
        return;
    }
    if (inputWalletSubtitle.getText().toString().trim().isEmpty()) {
        Toast.makeText(this, "Brak zlecenia!", Toast.LENGTH_SHORT).show();
        return;
    }
    if (inputWalletText.getText().toString().trim().isEmpty()) {
        Toast.makeText(this, "Brak opisu wydatku!", Toast.LENGTH_SHORT).show();
        return;
    }

    final Wallet wallet = new Wallet();
    wallet.setTitle(inputWalletTitle.getText().toString());
    wallet.setSubtitle(inputWalletSubtitle.getText().toString());
    wallet.setWalletText(inputWalletText.getText().toString());

    if (alreadyAvailableWallet != null) {
        wallet.setId(alreadyAvailableWallet.getId());
    }

    @SuppressLint("StaticFieldLeak")
    class SaveWalletTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... voids) {
            WalletDatabase.getDatebase(getApplicationContext()).walletDao().insertWallet(wallet);
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            Intent intent = new Intent();
            setResult(RESULT_OK, intent);
            finish();
        }
    }

    new SaveWalletTask().execute();

}

public void deleteText(View view) {
    final LinearLayout layoutMiscellcash = findViewById(R.id.layoutDeleteWallet);

    layoutMiscellcash.findViewById(R.id.layoutDeleteWallet).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            @SuppressLint("StaticFieldLeak")
            class DeleteWalletTask extends AsyncTask<Void, Void, Void> {

                @Override
                protected Void doInBackground(Void... voids) {
                    WalletDatabase.getDatebase(getApplicationContext()).walletDao()
                            .deleteWallet(alreadyAvailableWallet);
                    return null;
                }

                @Override
                protected void onPostExecute(Void aVoid) {
                    super.onPostExecute(aVoid);
                    Intent intent = new Intent();
                    intent.putExtra("isWalletDeleted", true);
                    setResult(RESULT_OK, intent);
                    finish();
                }
            }
            new DeleteWalletTask().execute();
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        if (data != null) {

        }
    }
}

}
logcat显示第58行和第46行,这是: this.findViewById(R.id.layoutDeleteWallet).setVisibility(View.VISIBLE); 以及: if (getIntent().getBooleanExtra("isViewOrUpdate", false)) { alreadyAvailableWallet = (Wallet) getIntent().getSerializableExtra("wallet"); setViewOrUpdateWallet(); } 我看不出这有什么问题。请帮忙。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题