Java 从活动调用方法时未更新片段UI
我有一个活动类CreateEventPage,它基本上调用onCreate方法中的一个片段,该方法加载表单以创建事件。按下特定按钮时,将调用showMapFragment()方法,该方法使用MyMapFragment对象替换该片段(扩展片段类) CreateEventPage类如下所示:Java 从活动调用方法时未更新片段UI,java,android,user-interface,android-fragments,android-activity,Java,Android,User Interface,Android Fragments,Android Activity,我有一个活动类CreateEventPage,它基本上调用onCreate方法中的一个片段,该方法加载表单以创建事件。按下特定按钮时,将调用showMapFragment()方法,该方法使用MyMapFragment对象替换该片段(扩展片段类) CreateEventPage类如下所示: public class CreateEventPage extends FragmentActivity implements MapLongPressListener { private Crea
public class CreateEventPage extends FragmentActivity implements
MapLongPressListener {
private CreateEventFragment eventFragment;
private MyMapFragment mapFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragmentcontainer);
eventFragment = new CreateEventFragment();
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, eventFragment).commit();
// Check whether the activity is using the layout version with
// the fragment_container FrameLayout. If so, we must add the first fragment
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.create_event_page, menu);
return true;
}
public void showTimePickerDialog(View v) {
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(getSupportFragmentManager(), "timePicker");
}
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
public void showMapFragment(View v) {
// If the frag is not available, we're in the one-pane layout and must swap frags...
// Create fragment and give it an argument for the selected article
mapFragment = new MyMapFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, mapFragment);
transaction.addToBackStack(null);
transaction.commit();
}
@Override
public void MapLongPressed(String locationAddress, double latitude, double longitude) {
FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.replace(R.id.fragment_container, eventFragment).commit();
eventFragment.initPositions(locationAddress, latitude, longitude);
}
}
当调用eventFragment对象的initPositions方法时,我会尝试更新EditText对象的文本字段。但是,UI不会得到更新。我也尝试过在UI线程上运行该方法,但仍然没有更新。view是一个全局变量,它存储片段的onCreateView方法返回的view对象。initPositions方法如下所示:
public void initPositions( String address, double lat, double longi) {
EditText location = (EditText) view.findViewById(R.id.LocationText);
latitude = lat;
longitude = longi;
location.setText(address);
Log.i("Init Positions", address);
Log.i("Init Positions", ""+latitude);
Log.i("Init Positions", ""+longitude);
Log.i("Init Positions", inputLocation.getText().toString());
}
然而,尽管如此,即使日志按照我的要求打印正确的值,UI也不会得到更新。你能告诉我我做错了什么吗
谢谢,Rohit位置当前在屏幕上吗?@blackbelt是的,我可以在我的屏幕上看到位置编辑文本字段。你解决过这个问题吗?