第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在空對(duì)象引用上接收“android.content.Context android.content.

在空對(duì)象引用上接收“android.content.Context android.content.

holdtom 2023-06-14 16:31:54
我是 android 開發(fā)和使用 java 編寫腳本的新手。我正在嘗試創(chuàng)建一個(gè)應(yīng)用程序,允許我通過開關(guān)打開和關(guān)閉內(nèi)部麥克風(fēng)。我找到了兩個(gè)腳本(一個(gè)開關(guān)腳本和一個(gè)麥克風(fēng)控制腳本),我已經(jīng)將它們放在一起,在我進(jìn)行的過程中糾正了所有調(diào)試問題,目前腳本顯示得很干凈。但是,當(dāng)它在手機(jī)或模擬器上運(yùn)行時(shí),它會(huì)立即崩潰并顯示以下錯(cuò)誤,android.content.Context android.content.Context.getApplicationContext()' on a null object reference”重點(diǎn)圍繞我對(duì) import android.content.Context; 的使用。該錯(cuò)誤似乎是基于 Context.getApplicationContext 請(qǐng)求未能找到結(jié)果并因此發(fā)布 NULL。我看過一長串其他遭受類似領(lǐng)域困擾的人,但所有解決方案似乎都集中在對(duì)他們代碼不同領(lǐng)域的更改上,而我無法將這些領(lǐng)域與我自己的腳本聯(lián)系起來。package com.example.myfirstapp;import androidx.appcompat.app.AppCompatActivity;import android.content.Context;import android.media.AudioManager;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Switch;public class MainActivity extends AppCompatActivity {    private Switch sw1;    Button btnGet;    Context context = getApplicationContext();    AudioManager audioManager = ((AudioManager)context.getSystemService(Context.AUDIO_SERVICE));    @Override    protected void onCreate(Bundle savedInstanceState) {        audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, true);        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        sw1 = findViewById(R.id.switch1);        btnGet = findViewById(R.id.getBtn);        btnGet.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (sw1.isChecked()) {                    audioManager.setMicrophoneMute(false);                }                else {                    audioManager.setMicrophoneMute(true);                }            }        });    }}即使腳本不起作用,預(yù)期的結(jié)果是我能夠運(yùn)行該應(yīng)用程序,目前該應(yīng)用程序在啟動(dòng)時(shí)崩潰并發(fā)布以下錯(cuò)誤消息......
查看完整描述

2 回答

?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊

您的問題是您試圖在初始化時(shí)檢索上下文,即。


Context context = getApplicationContext();

在創(chuàng)建活動(dòng)之前,無法保證getApplicationContext();會(huì)返回有效值。在這種情況下,它是空的,當(dāng)你試圖在下一行訪問它時(shí),你會(huì)得到一個(gè)空指針異常。您需要context在onCreate()音頻管理器中分配變量。


例如,像這樣:


    Context context;

    AudioManager audioManager;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        context = getApplicationContext();

        audioManager = ((AudioManager)context.getSystemService(Context.AUDIO_SERVICE));

    ...

    }

另一件需要注意的事情是該類Activity是 的子類Context,因此您無需檢索您可以編寫的應(yīng)用程序上下文


    AudioManager audioManager;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        audioManager = ((AudioManager)getSystemService(Context.AUDIO_SERVICE));

    ...

    }


查看完整回答
反對(duì) 回復(fù) 2023-06-14
?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊

我想,這里的問題是這一行:


Context context = getApplicationContext();

不要將其初始化為類字段,而是在onCreate()方法內(nèi)部對(duì)其進(jìn)行初始化。例如:


public class MainActivity extends AppCompatActivity {


private Switch sw1;

Button btnGet;

Context context;

AudioManager audioManager;

@Override

protected void onCreate(Bundle savedInstanceState) {



    super.onCreate(savedInstanceState);

    audioManager = ((AudioManager)getSystemService(Context.AUDIO_SERVICE));

    audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, true);

    context = getApplicationContext();


    setContentView(R.layout.activity_main);

    sw1 = findViewById(R.id.switch1);

    btnGet = findViewById(R.id.getBtn);

    .

    .


查看完整回答
反對(duì) 回復(fù) 2023-06-14
  • 2 回答
  • 0 關(guān)注
  • 278 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)