片段NullPointerException异常,改变TextView的片段的从活动文本 [英] Fragment NullPointerException, Changing fragment textView's text from activity
问题描述
我和我的Android项目的一个问题。我使用的数据映射到我的穿着发送数据。我在磨损主要活动获取数据的DataListener。
基本上我想改变活性片段的TextView的文本。当我试图做到这一点的失败,我得到 - > NullPointerException异常。我该如何解决呢?
是不是因为我打电话mainactivity`s片段onCreate方法?
MainActivity XML:
< android.support.v4.view.ViewPager的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:ID =@ + ID /寻呼机
机器人:layout_width =match_parent
机器人:layout_height =match_parent>< /android.support.v4.view.ViewPager>
Mainactivity
公共类MainActivity扩展FragmentActivity { @覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main_activity); viewpager =(ViewPager)findViewById(R.id.pager);
FragmentManager FM = getSupportFragmentManager();
viewpager.setAdapter(新FragmentAdapter(FM)); 的DataListener =新DataApi。的DataListener(){
@TargetApi(Build.VERSION_ codeS.LOLLIPOP)
@覆盖
公共无效onDataChanged(DataEventBuffer dataEvents){
最终的ArrayList< DataEvent>事件= FreezableUtils.freezeIterable(dataEvents);
数据映射mediaMap;
数据映射updateMap;
对于(DataEvent事件:事件){
PutDataMa prequest putDataMa prequest =
PutDataMa prequest.createFromDataMapItem(DataMapItem.fromDataItem(event.getDataItem())); 如果(event.getType()== DataEvent.TYPE_CHANGED){
如果(event.getDataItem()。getUri()的getPath()。等于(/ mypath中)){
数据映射= DataMapItem.fromDataItem(event.getDataItem())getDataMap(); 碎裂碎片=(MainControlScreenFragment)getSupportFragmentManager()findFragmentById(R.id.fragmentA)。}
}
请单吨执行你的片段,加入MainControlScreenFragment.class本线以上的 onCreateView()
方法
私有静态MainControlScreenFragment实例;公共MainControlScreenFragment(){
}/ **
*静态方法,它返回片段的实例。如果片段为null,加载它,
*别人创造新的片段。 Singleton模式。
*
* @返回
* /
公共静态MainControlScreenFragment的getInstance(){
如果(例如== NULL){
例如=新MainControlScreenFragment(); } 返回实例;
}
在在您的活动电话 MainControlScreenFragment.getInstance()changeTextMethod();
而不是 MainControlScreenFragment片段=(MainControlScreenFragment)getSupportFragmentManager()findFragmentById (R.id.fragmentA);
请注意,你的 changeTextMethod()
应 MainControlScreenFragment.class
希望它能帮助!
I have a problem with my android project. I am sending data using Datamap to my wear. I have a datalistener for getting data in the wear main activity.
Basically I want to change fragment's textView's text from activity. When I am trying to do this it fails and I got -->NullPointerException. How can I fix that?
Is that because I am calling the fragment in mainactivity`s onCreate method?
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>
Mainactivity
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);
}
}
Make single ton implementation in your fragment, add this lines in MainControlScreenFragment.class above onCreateView()
method:
private static MainControlScreenFragment instance;
public MainControlScreenFragment() {
}
/**
* Static method which return the instance of the fragment. If the fragment is null, load it,
* else create new fragment. Singleton pattern.
*
* @return
*/
public static MainControlScreenFragment getInstance() {
if (instance == null) {
instance = new MainControlScreenFragment();
}
return instance;
}
After that in your activity call MainControlScreenFragment.getInstance().changeTextMethod();
instead MainControlScreenFragment fragment = (MainControlScreenFragment) getSupportFragmentManager().findFragmentById(R.id.fragmentA);
Note that your changeTextMethod()
should be declared public in MainControlScreenFragment.class
Hope it help!
这篇关于片段NullPointerException异常,改变TextView的片段的从活动文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!