【发布时间】:2016-03-16 12:23:28
【问题描述】:
我的 android 项目有问题。我正在使用 Datamap 将数据发送到我的穿戴。我有一个数据监听器,用于在磨损主要活动中获取数据。
基本上我想从活动中更改片段的 textView 文本。当我尝试这样做时,它失败了,我得到了--> NullPointerException。我该如何解决?
是因为我在 mainactivity 的 onCreate 方法中调用了片段吗?
MainActivity xml:
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</android.support.v4.view.ViewPager>
主要活动
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
viewpager = (ViewPager) findViewById(R.id.pager);
FragmentManager fm = getSupportFragmentManager();
viewpager.setAdapter(new FragmentAdapter(fm));
dataListener = new DataApi. DataListener() {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void onDataChanged(DataEventBuffer dataEvents) {
final ArrayList<DataEvent> events = FreezableUtils.freezeIterable(dataEvents);
DataMap mediaMap;
DataMap updateMap;
for (DataEvent event : events) {
PutDataMapRequest putDataMapRequest =
PutDataMapRequest.createFromDataMapItem(DataMapItem.fromDataItem(event.getDataItem()));
if (event.getType() == DataEvent.TYPE_CHANGED) {
if (event.getDataItem().getUri().getPath().equals("/myPath")) {
dataMap= DataMapItem.fromDataItem(event.getDataItem()).getDataMap();
FragmentA fragment = (MainControlScreenFragment) getSupportFragmentManager().findFragmentById(R.id.fragmentA);
}
}
【问题讨论】:
-
请发布您的整个
MainActivity.class和它的xml 文件。 -
如果我理解正确,您想从
MainActivity调用方法到MainControlScreenFragment以在片段中设置一些文本。我说的对吗? -
是的,你是对的!
-
我有类似的问题,希望有人能帮助。
-
如果
DataListener的目的是更新Fragment中的文本,为什么不把它放在Fragment本身,而不是放在Activity中呢?看起来它通常是一个更合乎逻辑的结构,并且可以避免任何需要调用findFragmentById- 这似乎是您的问题所在(您实际上并没有指定 NPE 被抛出的位置)。
标签: android android-layout android-fragments wear-os android-wear-data-api