我遇到了问题。我想在选择项目(铃声)后更改textview的文本。我得到了选定的铃声标题,并希望将其写在textview的text属性上,但它不起作用(我在UI线程中不在单独的线程中)。
这是代码,我想更新文本:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(resultCode) {
case RESULT_OK:
String ringtoneTitle = null;
ringtoneUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if(ringtoneUri != null) {
ringtoneValue = ringtoneUri.toString(); //diesen Wert später in Datenbank abspeichern !!
ringtoneTitle = RingtoneManager.getRingtone(this, ringtoneUri).getTitle(this); //Titel getten
}
textViewRingtone.append(": " + ringtoneTitle); //Titel zu TextView setzen
break;
}
}
有人可以帮忙吗?
答案 0 :(得分:0)
使用post(Runnable)
类的View
方法:
textViewRingtone.post(new Runnable() {
@Override
public void run() {
textViewRingtone.append(": " + ringtoneTitle);
}
};
答案 1 :(得分:0)
尝试在处理程序中设置textview:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(resultCode) {
case RESULT_OK:
String ringtoneTitle = null;
ringtoneUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if(ringtoneUri != null) {
ringtoneValue = ringtoneUri.toString(); //diesen Wert später in Datenbank abspeichern !!
ringtoneTitle = RingtoneManager.getRingtone(this, ringtoneUri).getTitle(this); //Titel getten
}
new Handler().post(new Runnable() {
@Override
public void run() {
textViewRingtone.append(": " + ringtoneTitle); //Titel zu TextView setzen
}
});
break;
}
}
答案 2 :(得分:0)
行, 我找到了解决方案,这是我的一个非常非常愚蠢的错误,你无法知道,因为我没有向你展示这些代码。 在onClick方法中,我开始显示铃声选择器的意图我意外地调用了startActivity(intent)而不是startActivityForResult(intent,requestCode),因此无法调用onActivityResult。 感谢@codeMagic,他让我意识到了这个错误。