gpt4 book ai didi

java - Android 模拟器中的 FORCE CLOSE 错误

转载 作者:行者123 更新时间:2023-11-29 22:01:22 26 4
gpt4 key购买 nike

我正在学习 android,所以我编写这段代码只是为了切换电话铃声模式。代码编译没有问题,我在 Android Manifest 中输入,将内容 View 设置为所需的布局,但我运行此应用程序时,出现强制关闭错误。有人能告诉我为什么会出现 Force Close 错误,以便将来我应该自己解决问题。这是代码:

package com.umer.practice2;

import android.R.bool;
import android.app.Activity;
import android.media.AudioManager;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ToggleButton;

public class RingerMode extends Activity implements View.OnClickListener {

ToggleButton tb;
ImageView Riv;
TextView tv;
AudioManager mRing;
boolean silent;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.ringermode);

tb.setOnClickListener(this);
InitializeShit();

mRing=(AudioManager) getSystemService(AUDIO_SERVICE);
}

private void InitializeShit() {
// TODO Auto-generated method stub
tb= (ToggleButton) findViewById(R.id.ringTB);
tv= (TextView) findViewById(R.id.ringTV);
Riv= (ImageView) findViewById(R.id.ringIV);
}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
checkMode();
if(silent)
{
Riv.setImageResource(R.drawable.mysplash);
}else
{
Riv.setImageResource(R.drawable.myscreen);
}
}

@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
checkMode();
}

private void checkMode() {
// TODO Auto-generated method stub
int temp = mRing.getRingerMode();
if(temp==AudioManager.RINGER_MODE_SILENT)
{
tv.setText("Silent");
Riv.setImageResource(R.drawable.mysplash);
silent= true;
}else
if(temp==AudioManager.RINGER_MODE_NORMAL)
{
tv.setText("Normal");
Riv.setImageResource(R.drawable.myscreen);
silent= false;
}
}

非常感谢

最佳答案

您需要查看 logcat 以了解发生了什么。参见 Logcat | Android Developers .

找到崩溃的堆栈跟踪,它指向您的问题。如果您自己无法弄清楚,请复制/粘贴问题中的 logcat。

在这种情况下,您在初始化之前引用了 tb:

tb.setOnClickListener(this);

此时,tb 仍然是null,所以发生了NullPointerException。要解决此问题,请像这样更改您的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.ringermode);


InitializeShit();
tb.setOnClickListener(this);

mRing=(AudioManager) getSystemService(AUDIO_SERVICE);
}

此外,我建议使用 Java 关于方法和变量命名的约定:

  • 类(class)以大写开头:例如MyClass
  • 变量以小写开头:例如我的变量
  • 方法以小写开头:例如我的方法()

这将使您免于日后的困惑。

关于java - Android 模拟器中的 FORCE CLOSE 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11853541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com