Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改铃声选择对话框后从主活动查看对话框中的文本_Java_Android - Fatal编程技术网

Java 更改铃声选择对话框后从主活动查看对话框中的文本

Java 更改铃声选择对话框后从主活动查看对话框中的文本,java,android,Java,Android,我已经做了一段时间了。令人沮丧的!无法想到或找到解决方案。我是Java和Android的新手,这也许可以解释我的无知 在下面的代码中,我想将选中的铃声分配给TextviewringtoneDisplay——据我所知,主要问题是Textview位于对话框内,无法从主活动中更改。如何从主活动中更改对话框中的文本视图 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

我已经做了一段时间了。令人沮丧的!无法想到或找到解决方案。我是Java和Android的新手,这也许可以解释我的无知

在下面的代码中,我想将选中的铃声分配给TextviewringtoneDisplay——据我所知,主要问题是Textview位于对话框内,无法从主活动中更改。如何从主活动中更改对话框中的文本视图

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // When a configuration button is clicked that shows a dialog
    public void confClicked(View v) { 

        // Define and create a dialog to display
        final Dialog dialog = new Dialog(this);
            dialog.setContentView(R.layout.dialog); 
            dialog.show();

            // Dialog has a button to change ringtone
            Button changeRing = (Button) dialog.findViewById(R.id.changeRing);

            final TextView ringtoneDisplay = (TextView) dialog.findViewById(R.id.ringtone_textview);

        changeRing.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // Bring up ringtone change dialog
            Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone");
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri) null);
            MainActivity.this.startActivityForResult(intent, 5);
            }
        });

    }

    // Fired after ringtone was selected 

    protected void onActivityResult (final int requestCode, final int resultCode, final Intent intent)
     {

         if (resultCode == Activity.RESULT_OK && requestCode == 5)
             {
              Uri uri = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);

              if (uri != null)
              {
                  **// --> This below won't work.. 
                  // --> declaring ringtoneDisplay outside confClicked creates a runtime error.
                  // --> How do you go about updating ringtoneDisplay to display the ringtone that was chosen

                  ringtoneDisplay.settext(RingtoneManager.getRingtone(this, uri).getTitle(this));** 
              }


          }            

      }  


}

首先,不要使用
对话框
,因为您可以从Android上阅读

Dialog类是Dialog的基类,但应避免直接实例化Dialog。相反,使用其中一个子类

这就是我的建议:
创建用于显示对话框的方法

private void displayDialog(String ringtone)  
confClicked(视图v)
调用它。
MainActivity.this.startActivityForResult(intent,5)之后关闭对话框

OnActivityResult
中,再次呼叫
displayDialog
将所选铃声传递给它。

谢谢您的建议。如果我理解正确,那么您的意思是我必须关闭对话框并再次加载它。对话框中还有很多其他的东西我没有在这里的代码中包括。再次关闭和打开对话框将导致问题。。。理想的情况是,我可以只更新文本视图以指示所选的铃声。据我所知,这是不可能的。对话的目的是询问或报告某事。如果你想处理一些事情,最好使用活动。谢谢你的帮助。我想这是不可能的。。在花了一天的时间在网上搜刮,却一无所获。因此,我认为我同意,这很可能是不可能的对话。