目前我只能在点击刷新按钮时检索数据。
每次启动应用程序时,或者每次在页面之间切换时,如何自动从解析中检索数据? 感谢。
相关代码:
public class MyActivity extends ActionBarActivity
implements NavigationDrawerFragment.NavigationDrawerCallbacks {
String eventTxt;
EditText seteditTxt;
ParseObject Events = new ParseObject("Events");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
mNavigationDrawerFragment = (NavigationDrawerFragment)
getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
mTitle = getTitle();
// Set up the drawer.
mNavigationDrawerFragment.setUp(
R.id.navigation_drawer,
(DrawerLayout) findViewById(R.id.drawer_layout));
seteditTxt = (EditText) findViewById(R.id.seteditTxt);
updatelocalData();
updateData();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
seteditTxt = (EditText) findViewById(R.id.seteditTxt);
int id = item.getItemId();
if (id == R.id.action_refresh) {
updatelocalData();
updateData();
}
if (id == R.id.action_example) {
eventTxt = seteditTxt.getText().toString();
Events.put("EventName", eventTxt);
Events.saveEventually(new SaveCallback() {
public void done(ParseException e) {
if (e == null) {
// Saved successfully.
Toast.makeText(getApplicationContext(), "Saved", Toast.LENGTH_SHORT).show();
} else {
// The save failed.
Toast.makeText(getApplicationContext(), "Failed to Save", Toast.LENGTH_SHORT).show();
}
}
});
Events.pinInBackground();
}
return super.onOptionsItemSelected(item);
}
public void updateData() {
ParseQuery < ParseObject > query = ParseQuery.getQuery("Events");
query.getInBackground("d51GM3syxp", new GetCallback < ParseObject > () {
public void done(ParseObject Events, ParseException e) {
if (e == null) {
String Txt = Events.getString("EventName");
seteditTxt.setText(Txt);
} else {
// something went wrong
System.out.print("Error in parse retrieving");
}
}
});
}
public void updatelocalData() {
ParseQuery < ParseObject > query = ParseQuery.getQuery("Events");
query.fromLocalDatastore();
query.getInBackground("d51GM3syxp", new GetCallback < ParseObject > () {
public void done(ParseObject Events, ParseException e) {
if (e == null) {
String Txt = Events.getString("EventName");
seteditTxt.setText(Txt);
} else {
// something went wrong
System.out.print("Error in locally retrieving");
}
}
});
}
}
当我添加:
seteditTxt = (EditText) findViewById(R.id.seteditTxt);
updatelocalData();
updateData();
在我的onCreate()中,它在seteditTxt的第一个updatelocalData()方法中给出了一个错误: 尝试在空对象引用上调用虚方法'void android.widget.EditText.setText(java.lang.CharSequence)' -
activity_my.xml文件:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context=".MyActivity" android:background="@drawable/background">
<RelativeLayout android:id="@+id/container" android:layout_width="match_parent"
android:layout_height="match_parent">
</RelativeLayout>
<fragment android:id="@+id/navigation_drawer"
android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent"
android:layout_gravity="start"
android:name="com.mycompany.e_planner.NavigationDrawerFragment"
tools:layout="@layout/fragment_navigation_drawer" />
</android.support.v4.widget.DrawerLayout>
片段xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" tools:context="com.mycompany.e_planner.Calendar1"
android:background="#7dffe7f5">
<EditText
android:layout_width="match_parent"
android:layout_height="56dp"
android:inputType="textMultiLine"
android:ems="10"
android:id="@+id/seteditTxt"
android:layout_gravity="bottom"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="#7dfff6ec"
android:autoText="false"
android:text=" " />
</RelativeLayout>
答案 0 :(得分:0)
只需移动相关方法,我想这些:
updatelocalData();
updateData();
到活动的onCreate()
,onStart()
或onResume()
,具体取决于您的需求。
如果您在onCreate()
中执行此操作,请确保已初始化所有依赖于EditText seteditTxt
方法的UI元素。