我尝试在TextView
(来源)和EditText
(目的地)之间共享文字,但它没有正常运作。
问题的背景是" Start an activity with a shared element"转换,使用android:transtionName
属性。
启动新活动后,所有其他共享视图(ImageView
)都会显示其值。 EditText
知道内容,因为当我设置焦点时它正确显示。 " et.getText()
"的记录器显示EditText
内容已确定但尚未显示。
操作顺序如下:
来源活动' A'有原始数据:
TextView
价值:" Hello world"。 android:transtionName="transition_text"
TextView
显示:" Hello world" 关于用户活动,活动' B'使用共享元素转换启动并添加要共享的所有元素。
进入' B' onCreate
方法正确获取和设置共享数据。所有元素都包含它们的值,但EditText不显示它:
EditText
价值:" Hello world"。 android:transtionName="transition_text"
EditText
显示:"" 共享元素转换可能不允许不同类型文本视图之间的转换(TextView
- > EditText
)?
由于
答案 0 :(得分:0)
尝试从 TextView
获取文本,然后隐藏 toString()
,然后在 EditText
上设置文本
TextView tv = new TextView(this);
EditText et = new EditText(this);
tv.setText("Hello World");
String source = tv.getText().toString();
et.setText(source);
答案 1 :(得分:0)
为了解决这个问题,我将EditText和TextView包装到Layout中,然后在布局上进行动画制作。
这是我的编辑文字:
<LinearLayout
android:id="@+id/meeting_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:transitionName="tMeetingtitle">
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
然后我的TextView:
<LinearLayout
android:id="@+id/meeting_title"
android:layout_width="wrap_content"
android:layout_height="33dp"
android:transitionName="tMeetingtitle"
>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
在我的片段中,我开始制作动画:
Intent intent = new Intent(mainActivity, DetailMeetingActivity.class);
LinearLayout meetingTitle = (LinearLayout) view.findViewById(R.id.meeting_title);
Pair<View, String> meetingTitlePair = Pair.create((View) meetingTitle, "tMeetingtitle");
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(mainActivity, meetingTitlePair);
ActivityCompat.startActivity(mainActivity, intent, options.toBundle());