我现在有两个布局文件 main.xml   sound_dialog.xml
一个Activity(General_Scene)文件
现在情况如下:
private SeekBar seekbar_ring;protected void onCreate(Bundle savedInstanceState) {   在onCreate方法中加载了main文件,
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
         //如果是setContentView(R.layout.sound_dialog)的话,在这里可以正确获取seekbar_ring的值
         ......
}
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 1, 1, "音量");
menu.add(0, 2, 2, "退出");
return super.onCreateOptionsMenu(menu);
}
在点击菜单时候会出现“音量”和“退出”两个选项,点击“音量”在该Activity界面会出现一个Dialog对话框,对话框中调节音量大小,现在无法获取seekbar的值,各位大侠帮忙解决下,不胜感激
public boolean onOptionsItemSelected(MenuItem item) {
int item_id = item.getItemId();
switch (item_id) {
case 1:
LayoutInflater flater = LayoutInflater.from(General_Scene.this);
View DialogView = flater.inflate(R.layout.sound_dialog, null);
new AlertDialog.Builder(this).setIcon(R.drawable.ic_settings_sound)
.setTitle("音量").setView(DialogView).setNegativeButton("取消",null).setPositiveButton("确定",new DialogInterface.OnClickListener() {
@Override log.d("test","seekbar_ring:"+seekbar_ring); // 这个值为null; 如何获取到seekbar_ring值啊? //(seekbar_ring是sound_dialog.xml文件中seekbar的ID) public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
              
}
}).create().show();

break;
         ....... 

解决方案 »

  1.   

    首先定义SeekBar类型的成员变量,在onCreate中 取得seekbar的对象,并赋值给成员变量,然后在用的时候调用SeekBar对象相应的方法就行了
      

  2.   

    但是在onCreate的时候加载的布局文件是main.xml文件,这个时候也无法获取seekbar值啊,如果是加载
    sound_dialog.xml文件的话,就可以得到seekbar的值;[
      

  3.   

    seekbar的值必须保存起来,在加载界面的时候就设置好seekbar的值。保存可以用Preference。然后在每次修改以后在修改seekbar的值在保存起来,这样以后即时你的应用关闭在进入值还是能读取到的哦
      

  4.   

    数据共享是个好办法,但在什么地方可以获取到XML文件里的原始值呢?
      

  5.   

    楼主方向弄错了吧?调整音量时,不是获得seekbar的值,而是获得系统音量的值来设定seekbar的值,
    具体源码可以参考Settings.apk里的RingVolumePreference里的设置,它是通过绑定数据来实现的
        private static final int[] SEEKBAR_ID = new int[] {
            R.id.notification_volume_seekbar,
            R.id.media_volume_seekbar,
            R.id.alarm_volume_seekbar
        };
        private static final int[] SEEKBAR_TYPE = new int[] {
            AudioManager.STREAM_NOTIFICATION,
            AudioManager.STREAM_MUSIC,
            AudioManager.STREAM_ALARM
        };
      

  6.   

    AudioManager这个文件是在frameworks里的,我这个是自己单独的APK,好像无法调用啊
      

  7.   

    应该有个OnProgressChanged方法,,里面有个progress就是他的值,做运算就好了啊
      

  8.   

    OnProgressChanged是获取值后进行调节的方法,现在根本获取不到progress的值.
      

  9.   

    当前类实现了OnSeekBarChangeListener接口,为什么获取不到progress??
      

  10.   

    你是不是获取的seekbar有问题啊。。你这个seekbar应该是alertdialog的view吧。。试试
    seekbar1 = (SeekBar) DialogView.findViewById(R.id.seek1)获取seekbar,看还能不能获取到progress
      

  11.   

    不能编译呢?AudioManager是SDK里面的类哦
      

  12.   

    而且类似seekbar,listview之类的,它们都不能保存数据,每次启动的时候都要setValue一次