以这种方式实现了一个对话框片段:
public class ProgressFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
View v = getActivity().getLayoutInflater().inflate(R.layout.installation_page, null);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
titleView = (TextView) v.findViewById(R.id.progressText);
titleView.setText("progress");
builder.setView(v);
return builder.create();
}
TextView titleView;
public TextView getTextView() {
return titleView;
}
Run Code Online (Sandbox Code Playgroud)
并且我希望能够从调用它的任何地方更新 titleView 的内容。喜欢:
ProgressFragment progressFragment = new ProgressFragment();
progressFragment.show(getSupportFragmentManager(),"");
Run Code Online (Sandbox Code Playgroud)
问题是像这样的尝试者:
((TextView)progressFragment.getDialog().findViewById(R.id.progressText)).setText("text");
Run Code Online (Sandbox Code Playgroud)
和
progressFragment.getTextView().setText("text");
Run Code Online (Sandbox Code Playgroud)
和
((TextView)progressFragment.getView().findViewById(R.id.progressText)).setText("working in this place");
Run Code Online (Sandbox Code Playgroud)
都返回空值。我该怎么做呢。谢谢
不!不!不!
如果您使用以下命令创建 DialogFragment
`Dialog onCreateDialog(Bundle savedInstanceState)`
Run Code Online (Sandbox Code Playgroud)
(你的视图已经死了)因为你用对话框创建了它但不是
public View onCreateView(LayoutInflater inflater,ViewGroup
container,Bundle savedInstanceState) {
Run Code Online (Sandbox Code Playgroud)
看看你的代码,我建议你使用第二种方法来创建 DialogFrament,因为你只是返回一个TextView 奶酪
但如果你坚持你的方法,那么你的解决方案会更长
progressFragment.getDialog().getWindow().getDecorView()
Run Code Online (Sandbox Code Playgroud)
装饰视图可能是你的TextView ,我不确定,但总的来说
progressFragment.getDialog().getWindow().findViewById();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4460 次 |
| 最近记录: |