0

しばらくこれにいた。もどかしい!解決策を考えたり見つけたりできない。私は Java と Android に慣れていないので、私の無知が説明できるかもしれません。

以下のコードでは、選択された着信音を Textview ringtoneDisplayに割り当てたいと思います。私が理解している主な問題は、Textview がダイアログ内にあることです。これはメイン アクティビティから変更できません。メイン アクティビティからダイアログの 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));** 
              }


          }            

      }  


}
4

1 に答える 1

0

AndroidのドキュメントDialogから読むことができるように、最初に を使用しないでください:

Dialog クラスはダイアログの基本クラスですが、Dialog を直接インスタンス化することは避ける必要があります。代わりに、サブクラスの 1 つを使用します。

これは私が提案するものです:
ダイアログを表示するために使用されるメソッドを作成します

private void displayDialog(String ringtone)  

confClicked(View v)それを呼び出すから。 通話中のダイアログを閉じた
後、選択した着信音を再度渡します。MainActivity.this.startActivityForResult(intent, 5);
OnActivityResultdisplayDialog

于 2013-10-19T12:20:50.287 に答える