2016-08-26 6 views
0

私はAzureのアプリサービスを自分のアプリに統合しようとしています。特に、私はAzureによってホストされているデータベースにデータを格納しようとしています。私は、データを正常に挿入することができますが、私はそれを取得しようとするたびに、私のアプリはフリーズする。Azureを照会するとAndroid Appがフリーズする

MainActivity - アクティビティを開始し、空白の接続とテーブルを初期化します。

public class MainActivity extends ActionBarActivity { 

    /** 
    * TODO: view data, put data in ordered lists, rate data, scheduler 
    * **/ 

    Toolbar toolbar; 
    ViewPager pager; 
    ViewPageAdapter adapter; 
    SlidingTabLayout tabs; 
    CharSequence Titles[]={"New","Trending","Famous"}; 
    int Numboftabs =3; 
    MobileServiceClient client; 
    MobileServiceTable<Post> postTable; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     // Creating The Toolbar and setting it as the Toolbar for the activity 

     toolbar = (Toolbar) findViewById(R.id.tool_bar); 
     setSupportActionBar(toolbar); 

     //manually set action bar color since not happening before 
     getWindow().setStatusBarColor(getResources().getColor(R.color.colorPrimaryDark)); 

     // Creating The ViewPagerAdapter and Passing Fragment Manager, Titles fot the Tabs and Number Of Tabs. 
     adapter = new ViewPageAdapter(getSupportFragmentManager(),Titles,Numboftabs); 

     // Assigning ViewPager View and setting the adapter 
     pager = (ViewPager) findViewById(R.id.pager); 
     pager.setAdapter(adapter); 

     // Assiging the Sliding Tab Layout View 
     tabs = (SlidingTabLayout) findViewById(R.id.tabs); 
     tabs.setDistributeEvenly(true); // To make the Tabs Fixed set this true, This makes the tabs Space Evenly in Available width 

     // Setting Custom Color for the Scroll bar indicator of the Tab View 
     tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() { 
      @Override 
      public int getIndicatorColor(int position) { 
       return getResources().getColor(R.color.colorAccent); 
      } 
     }); 

     // Setting the ViewPager For the SlidingTabsLayout 
     tabs.setViewPager(pager); 



     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
       postPrompt(); 
      } 
     }); 

     //initialize azure 
     try { 
      client = new MobileServiceClient("https://firechat.azurewebsites.net", this); 
      postTable = client.getTable(Post.class); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } 

     //testing 
     //Post post = new Post("haha, so funny :p"); 
     //postTable.insert(post); 

    } 


    private String makePost(String input){ 
     Post post = new Post(input); 
     postTable.insert(post); 
     return post.text; 
    } 
} 
     return post.text; 
    } 
} 

Tab1を - サーバから取得したデータのリストを移入断片。私は、データのために紺碧を照会しようとすると私のエラーがここにあると信じています。

public class Tab1 extends Fragment { 
    MainActivity mainActivity; 

    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View v =inflater.inflate(R.layout.tab_1,container,false); 

     return v; 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 

     try { 
      //get data from azure 
      mainActivity = (MainActivity) getActivity(); 
      List<Post> postList= mainActivity.postTable.execute().get(); 
      //List<Post> postList = new ArrayList<Post>(); 

      //set lists 
      ListView newListView = (ListView) mainActivity.findViewById(R.id.newListView); 
      NewAdapter newAdapter = new NewAdapter(mainActivity, postList); 
      newListView.setAdapter(newAdapter); 
     }catch(Exception e){ 

     } 
    } 
} 
+0

私は私の質問を解決しました。私は下に答えを残して、数日後にそれを正しいものとして選ぶでしょう。 – Oblivionkey3

答えて

0

非同期タスクを使用してAzureからデータを取得する必要があるため、エラーが発生していました。私は下の一例を残しました。

private void retrievePosts(){ 
     AsyncTask<Void,Void,Void> task = new AsyncTask<Void,Void,Void>(){ 
      @Override 
      protected Void doInBackground(Void... params) { 
       try { 
        postList= mainActivity.postTable.execute().get(); 
        Log.e("TAG",postList.get(0).text); 
        newAdapter.updateList(postList); 
       } catch (final Exception e) { 
       } 
       return null; 
      } 
     }; 

     runAsyncTask(task); 
    } 
関連する問題