2 回答
TA贡献1943条经验 获得超7个赞
您的问题是您试图在初始化时检索上下文,即。
Context context = getApplicationContext();
在创建活动之前,无法保证getApplicationContext();会返回有效值。在这种情况下,它是空的,当你试图在下一行访问它时,你会得到一个空指针异常。您需要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,因此您无需检索您可以编写的应用程序上下文
AudioManager audioManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
audioManager = ((AudioManager)getSystemService(Context.AUDIO_SERVICE));
...
}
TA贡献1993条经验 获得超5个赞
我想,这里的问题是这一行:
Context context = getApplicationContext();
不要将其初始化为类字段,而是在onCreate()方法内部对其进行初始化。例如:
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);
.
.
添加回答
举报