2015-04-16 4 views
1

В настоящее время я могу получить данные только при нажатии кнопки обновления.Как получить данные автоматически при запуске приложения через синтаксический анализ?

Как сделать так, чтобы данные автоматически обрабатывались автоматически при каждом запуске приложения или даже при каждом переключении между страницами? Спасибо.

Соответствующий код:

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() он дает мне ошибку в первом методе updatelocalData() в seteditTxt говоря: Попытка invoke virtual method '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

Имейте базовый актив и напишите логику ur, поэтому, когда вы когда-либо перемещаетесь между действиями, он загружает контент из parse –

+0

Спасибо. Базовая деятельность как в? Данные отображаются на фрагментах - это основная активность. @HarshaVardhan –

+0

Хорошо. все же вы можете создать базовый фрагмент и onstart фрагмента вызвать метод базовой активности –

ответ

0

Просто переместите соответствующие методы, я полагаю, это:

updatelocalData(); 
    updateData(); 

на данный вид деятельности onCreate(), onStart() или onResume() в зависимости от ваших потребностей. Если вы делаете это в onCreate(), убедитесь, что все элементы пользовательского интерфейса, включая EditText seteditTxt, были основаны на методах, основанных на использовании.

+0

, когда добавляю: seteditTxt = (EditText) findViewById (R.id.seteditTxt); updatelocalData(); updateData(); в моем OnCreate() он дает мне ошибку в первом методе updatelocalData() в seteditTxt говоря: попытки вызвать виртуальный метод «недействительный android.widget.EditText.setText (java.lang.CharSequence)» на нуле ссылка на объект –

+0

Можете ли вы опубликовать код onCreate? Вы также можете попробовать вызвать методы в onStart – inmyth

+0

Обновлен мой код с кодом onCreate. –