在我的一项活动中,我有许多片段ViewPager
。这些片段上有文字。我的目标是在我的活动中发生事件时更新片段上的文本。
我已经尝试了一些事情,但我似乎找不到可以使用的视图。在下面的代码中,我尝试将视图从onCreateView
私有字段保存。这在创建我的片段时成功,但是当我尝试调用refresh
my时mView
为空。
refresh
在接口中实现。我ViewPager
有 2 个不同的片段,所以我实现了接口以允许我投射未知片段来调用刷新。
我试图编写下面的代码来最好地说明我的问题。我可以将文本设置为“Hello”,但在刷新时,活动将崩溃,因为mView
它为空。
private View mView = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (container == null) { return null; }
View view = inflater.inflate(R.layout.view_account_general, container, false);
mView = view;
setContent();
return view;
}
private void setContent() {
if (mView == null) return;
((TextView) mView.findViewById(R.id.mId)).setText("Hello");
}
@Override
public void refresh() {
((TextView) mView.findViewById(R.id.mId)).setText("Test");
}
我做错了什么,我应该怎么做?片段对我来说很新,我很长时间没有为 Android 编程了。我唯一的目的是在调用方法TextView
时更新 my 的值。refresh
感谢您尝试帮助我解决我的问题!
编辑:根据要求,异常跟踪。
FATAL EXCEPTION: main
java.lang.NullPointerException
at com.jordanmoore.finances.AccountGeneralFragment.refresh(AccountGeneralFragment.java:85)
at com.jordanmoore.finances.AccountActivity.onOptionsItemSelected(AccountActivity.java:222)
at android.app.Activity.onMenuItemSelected(Activity.java:2534)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:361)
at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:964)
at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
at com.android.internal.view.menu.MenuPopupHelper.onItemClick(MenuPopupHelper.java:156)
at android.widget.AdapterView.performItemClick(AdapterView.java:298)
at android.widget.AbsListView.performItemClick(AbsListView.java:1090)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:2863)
at android.widget.AbsListView$1.run(AbsListView.java:3538)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:4786)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
at dalvik.system.NativeStart.main(Native Method)