java - 按钮在 Android AudioManager 中不起作用

标签 java android android-activity

大家好,我是 Android 开发新手,我正在尝试制作一个简单的音频管理器,其中 MainActivity 类将处理按钮监听器事件和 Listeners类将具有silent()、vibrate()、ring() 方法。到目前为止,应用程序正在启动,但每当我单击振动按钮时,应用程序就会强制关闭。我认为我的代码有问题,但由于我是新人,所以我无法弄清楚。

MainActivity.java

public class MainActivity extends Activity {
private Button home, pocket, silent;
private TextView tv;
private Listeners myAudManHolder;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

    home = (Button) findViewById(R.id.home);
    pocket = (Button) findViewById(R.id.pocket);
    silent = (Button) findViewById(R.id.silent);
    tv = (TextView) findViewById(R.id.tv);

    myAudManHolder = new Listeners();

    pocket.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {
            myAudManHolder.vibrate();
        }

    });
}

Listeners.java

public class Listeners {
AudioManager myAudMan;

public void vibrate() {
    myAudMan.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
   }
}

LogCat 日志

10-28 20:57:51.381: W/dalvikvm(1232): threadid=1: thread exiting with uncaught exception (group=0x40015560)
10-28 20:57:51.401: E/AndroidRuntime(1232): FATAL EXCEPTION: main
10-28 20:57:51.401: E/AndroidRuntime(1232): java.lang.NullPointerException
10-28 20:57:51.401: E/AndroidRuntime(1232):     at edu.shihank.audiomanager.Listeners.vibrate(Listeners.java:13)
10-28 20:57:51.401: E/AndroidRuntime(1232):     at edu.shihank.audiomanager.MainActivity$1.onClick(MainActivity.java:39)

我的 vibrate() 方法及其 OnClickListener 事件有什么问题?我今天需要这个解决方案,您的帮助将非常感激。交易。

最佳答案

Listeners.java 中的 myAudMan 为空。

试试这个

在MainActivity.java中

AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
myAudManHolder = new Listeners(am);


公共(public)类听众{ AudioManager myAudMan;

Listners(AudioManager audioManager){
 this.myAudMan = audioManager;
 }
public void vibrate() {
    myAudMan.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
   }
}

关于java - 按钮在 Android AudioManager 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26612396/

相关文章:

java - 如何查看 application.properties 文件中的属性引用的位置?

java - MyBatis:递归同时映射多个相同类型的关联/集合

php - Android 将 PHP 中的字符串拆分为 AlertDialog 的数组

尽管 "singleTop",Android 在顶部创建新 Activity

android - NavUtils.shouldUpRecreateTask 在 JellyBean 上失败

java - 文件签名 0A 0A 0A

java - 如何将线性布局中的单选按钮放入 RadioGroup 中

android - 使 StaggeredGridLayout 包装内容

android - Genymotion GPS 未更新

android - Activity 中的线程是否在启动另一个时终止?