Java 更改铃声选择对话框后从主活动查看对话框中的文本
我已经做了一段时间了。令人沮丧的!无法想到或找到解决方案。我是Java和Android的新手,这也许可以解释我的无知 在下面的代码中,我想将选中的铃声分配给TextviewringtoneDisplay——据我所知,主要问题是Textview位于对话框内,无法从主活动中更改。如何从主活动中更改对话框中的文本视图Java 更改铃声选择对话框后从主活动查看对话框中的文本,java,android,Java,Android,我已经做了一段时间了。令人沮丧的!无法想到或找到解决方案。我是Java和Android的新手,这也许可以解释我的无知 在下面的代码中,我想将选中的铃声分配给TextviewringtoneDisplay——据我所知,主要问题是Textview位于对话框内,无法从主活动中更改。如何从主活动中更改对话框中的文本视图 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
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
将所选铃声传递给它。谢谢您的建议。如果我理解正确,那么您的意思是我必须关闭对话框并再次加载它。对话框中还有很多其他的东西我没有在这里的代码中包括。再次关闭和打开对话框将导致问题。。。理想的情况是,我可以只更新文本视图以指示所选的铃声。据我所知,这是不可能的。对话的目的是询问或报告某事。如果你想处理一些事情,最好使用活动。谢谢你的帮助。我想这是不可能的。。在花了一天的时间在网上搜刮,却一无所获。因此,我认为我同意,这很可能是不可能的对话。