0

Below activity is called by mainactivity.This activity will call 3 fragments.Fragmenttab1.java is the first fragment.The main activity is only using intent to call Fragmenttab which in turn will call the first fragment.

FragmentTab.java

package com.androidbegin.absviewpagertutorial;

import java.util.ArrayList;
import java.util.Locale;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.os.Bundle;
import android.provider.BaseColumns;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.CursorAdapter;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.actionbarsherlock.view.MenuItem.OnActionExpandListener;
import com.actionbarsherlock.view.MenuItem.OnMenuItemClickListener;
import com.actionbarsherlock.widget.SearchView;






public class FragmentTab extends SherlockFragmentActivity  implements TextView.OnEditorActionListener,SearchView.OnQueryTextListener,
SearchView.OnSuggestionListener{
    //actionbarsherlock is used to display tabs and search at the top
    // Declare Variables
    ActionBar mActionBar;
    ViewPager mPager;
    Tab tab;
    EditText editsearch;
    private static final String TAG_LIST = "list";
    public static int THEME = R.style.Theme_Sherlock;
    private SuggestionsAdapter mSuggestionsAdapter;
    private static final String[] COLUMNS = {
        BaseColumns._ID,
        SearchManager.SUGGEST_COLUMN_TEXT_1,
};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Get the view from activity_main.xml
        setContentView(R.layout.activity_main);
        //((TextView)findViewById(R.id.text)).setText(R.string.search_views_content);

        // Activate Navigation Mode Tabs
        mActionBar = getSupportActionBar();
        mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // Locate ViewPager in activity_main.xml
        mPager = (ViewPager) findViewById(R.id.pager);

        // Activate Fragment Manager
        FragmentManager fm = getSupportFragmentManager();

        // Capture ViewPager page swipes
        ViewPager.SimpleOnPageChangeListener ViewPagerListener = new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                // Find the ViewPager Position
                mActionBar.setSelectedNavigationItem(position);
            }
        };

        mPager.setOnPageChangeListener(ViewPagerListener);
        // Locate the adapter class called ViewPagerAdapter.java
        ViewPagerAdapter viewpageradapter = new ViewPagerAdapter(fm);
        // Set the View Pager Adapter into ViewPager
        mPager.setAdapter(viewpageradapter);

        // Capture tab button clicks
        ActionBar.TabListener tabListener = new ActionBar.TabListener() {

            @Override
            public void onTabSelected(Tab tab, FragmentTransaction ft) {
                // Pass the position on tab click to ViewPager
                mPager.setCurrentItem(tab.getPosition());

            }

            @Override
            public void onTabUnselected(Tab tab, FragmentTransaction ft) {
                // TODO Auto-generated method stub
            }

            @Override
            public void onTabReselected(Tab tab, FragmentTransaction ft) {
                // TODO Auto-generated method stub
            }
        };

        // Create first Tab
        tab = mActionBar.newTab().setText("Search").setTabListener(tabListener);
        mActionBar.addTab(tab);

        // Create second Tab
        tab = mActionBar.newTab().setText("Fav").setTabListener(tabListener);
        mActionBar.addTab(tab);

        // Create third Tab
        tab = mActionBar.newTab().setText("Official Search").setTabListener(tabListener);
        mActionBar.addTab(tab);

    }

/*  public boolean onCreateOptionsMenu(Menu menu) {
        // Get the options menu view from menu.xml in menu folder
        getSupportMenuInflater().inflate(R.menu.actions, menu);

        // Locate the EditText in menu.xml
        editsearch = (EditText) menu.findItem(R.id.menu_search).getActionView();

        // Capture Text in EditText
        editsearch.addTextChangedListener(textWatcher);

        // Show the search menu item in menu.xml
        MenuItem menuSearch = menu.findItem(R.id.menu_search);

        menuSearch.setOnActionExpandListener(new OnActionExpandListener() {

            // Menu Action Collapse
            @Override
            public boolean onMenuItemActionCollapse(MenuItem item) {
                // Empty EditText to remove text filtering
                editsearch.setText("");
                editsearch.clearFocus();
                return true;
            }

            // Menu Action Expand
            @Override
            public boolean onMenuItemActionExpand(MenuItem item) {
                // Focus on EditText
                editsearch.requestFocus();

                // Force the keyboard to show on EditText focus
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
                return true;
            }
        });
       return true; 
    }*/


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //Used to put dark icons on light action bar
       boolean isLight = FragmentTab.THEME == R.style.Theme_Sherlock_Light;

        //Create the search view
        SearchView searchView = new SearchView(getSupportActionBar().getThemedContext());
        searchView.setQueryHint("Search for employees");
        searchView.setOnQueryTextListener(this);
        searchView.setOnSuggestionListener(this);

        if (mSuggestionsAdapter == null) {
            MatrixCursor cursor = new MatrixCursor(COLUMNS);
            cursor.addRow(new String[]{"1", "'Murica"});
            cursor.addRow(new String[]{"2", "Canada"});
            cursor.addRow(new String[]{"3", "Denmark"});
            mSuggestionsAdapter = new SuggestionsAdapter(getSupportActionBar().getThemedContext(), cursor);
        }

        searchView.setSuggestionsAdapter(mSuggestionsAdapter);

        menu.add("Search")
            .setIcon(isLight ? R.drawable.ic_search_inverse : R.drawable.abs__ic_search)
            .setActionView(searchView)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);

        return true;
    }

    @Override
    public boolean onQueryTextSubmit(String query) {
        //Toast.makeText(this, "You searched for: " + query, Toast.LENGTH_LONG).show();

        ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
     postParameters.add(new BasicNameValuePair("name",query));
    String response = null;
    try{
    response = CustomHttpClient.executeHttpPost("http://10.0.2.2/android_db/ppf4_search.php",postParameters);
    String result = response.toString();  

    Intent intent = new Intent(FragmentTab.this, AdvancedSearch.class);
    intent.putExtra("newresult", result);
    startActivity(intent);}
    catch (Exception e) {
         Log.e("log_tag","Error in http connection!!" + e.toString());     
        }


        return true;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
        return false;
    }

    @Override
    public boolean onSuggestionSelect(int position) {
        return false;
    }

    @Override
    public boolean onSuggestionClick(int position) {
        Cursor c = (Cursor) mSuggestionsAdapter.getItem(position);
        String query = c.getString(c.getColumnIndex(SearchManager.SUGGEST_COLUMN_TEXT_1));
        Toast.makeText(this, "Suggestion clicked: " + query, Toast.LENGTH_LONG).show();
        return true;
    }

    private class SuggestionsAdapter extends CursorAdapter {

        public SuggestionsAdapter(Context context, Cursor c) {
            super(context, c, 0);
        }

        @Override
        public View newView(Context context, Cursor cursor, ViewGroup parent) {
            LayoutInflater inflater = LayoutInflater.from(context);
            View v = inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
            return v;
        }

        @Override
        public void bindView(View view, Context context, Cursor cursor) {
            TextView tv = (TextView) view;
            final int textIndex = cursor.getColumnIndex(SearchManager.SUGGEST_COLUMN_TEXT_1);
            tv.setText(cursor.getString(textIndex));
        }
    }




    // EditText TextWatcher
    private TextWatcher textWatcher = new TextWatcher() {

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            String text = editsearch.getText().toString()
                    .toLowerCase(Locale.getDefault());
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub

        }



    };
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        // TODO Auto-generated method stub
        return false;
    }
}

FragmentTab1.java

package com.androidbegin.absviewpagertutorial;
//This is the first fragment which is called
import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.app.SherlockFragmentActivity;



public class FragmentTab1 extends SherlockFragment implements OnItemSelectedListener {
    Button submit;
    TextView tv;
    EditText jname;
    EditText jemail;
     EditText jinterest;
     String returnString;


    @Override
    public SherlockFragmentActivity getSherlockActivity() {
        return super.getSherlockActivity();
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // Get the view from fragmenttab1.xml
        View view = inflater.inflate(R.layout.fragmenttab1, container, false);


        final Spinner spinner1 = (Spinner) view.findViewById(R.id.Spinner1);
          // Spinner click listener
      spinner1.setOnItemSelectedListener(this);
       // Spinner Drop down elements
      List<String> categories = new ArrayList<String>();



        ArrayList<NameValuePair> response_Parameters = new ArrayList<NameValuePair>();
        String dept_response = null;
        try {
             dept_response = CustomHttpClient.executeHttpPost("http://10.0.2.2/android_db/ppf4_dept.php",response_Parameters);
        String dept_result = dept_response.toString();
        JSONArray jArray = new JSONArray(dept_result);
          for(int i=0;i<jArray.length();i++){
                JSONObject json_data = jArray.getJSONObject(i);

               // String name=json_data.getString("dept");
                categories.add(json_data.getString("dept"));}

        }
        catch(JSONException e){
            Log.e("log_tag", "Error parsing data "+e.toString());
    }
        catch (Exception e) {
             Log.e("log_tag","Error in http connection!!" + e.toString());     
            }




        // Creating adapter for spinner
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, categories);
        // Drop down layout style - list view with radio button
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        // attaching data adapter to spinner
        spinner1.setAdapter(dataAdapter);
        String jdepartment = spinner1.getSelectedItem().toString();


        final Spinner spinner2 = (Spinner) view.findViewById(R.id.Spinner2);
          // Spinner click listener
      spinner2.setOnItemSelectedListener(this);
      // Spinner Drop down elements
      List<String> categories2 = new ArrayList<String>();
      categories2.add("teaching");
      categories2.add("lab");
      categories2.add("asst proff");
      categories2.add("lab");
      // Creating adapter for spinner
        ArrayAdapter<String> dataAdapter2 = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, categories2);
        // Drop down layout style - list view with radio button
        dataAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        // attaching data adapter to spinner
        spinner2.setAdapter(dataAdapter2);
        String jrole = spinner2.getSelectedItem().toString();



        //spinner3
        final Spinner spinner3 = (Spinner) view.findViewById(R.id.Spinner3);
          // Spinner click listener
      spinner3.setOnItemSelectedListener(this);
      // Spinner Drop down elements
      List<String> categories3 = new ArrayList<String>();
      categories3.add("teacheris");
      categories3.add("hodis");
      categories3.add("acctis");
      categories3.add("ftyftyf");
      // Creating adapter for spinner
        ArrayAdapter<String> dataAdapter3 = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, categories3);
        // Drop down layout style - list view with radio button
        dataAdapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        // attaching data adapter to spinner
        spinner3.setAdapter(dataAdapter3);
        String jdesignation = spinner3.getSelectedItem().toString();



        jname = (EditText) view.findViewById(R.id.editText1);//name
        jemail = (EditText) view.findViewById(R.id.editText5);//email
        jinterest = (EditText) view.findViewById(R.id.editText6);//technological interest
        submit = (Button) view.findViewById(R.id.submitbutton);
        tv = (TextView) view.findViewById(R.id.textView9);
        submit.setOnClickListener(new View.OnClickListener(){        
             public void onClick(View v) {

                 ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
                 postParameters.add(new BasicNameValuePair("name",
                          jname.getText().toString()));

                             postParameters.add(new BasicNameValuePair("department",
                                     spinner1.getSelectedItem().toString()));

                              postParameters.add(new BasicNameValuePair("role",
                                      spinner2.getSelectedItem().toString()));

                              postParameters.add(new BasicNameValuePair("designation",
                                      spinner3.getSelectedItem().toString()));

                              postParameters.add(new BasicNameValuePair("email",
                                      jemail.getText().toString()));

                              postParameters.add(new BasicNameValuePair("interest",
                                      jinterest.getText().toString()));

                              String response = null;

                              // call executeHttpPost method passing necessary parameters 
                              try {
                         response = CustomHttpClient.executeHttpPost("http://10.0.2.2/android_db/ppf4.php",postParameters);
                       //response = CustomHttpClient.executeHttpPost("http://webdev1.tifr.res.in/~PFproj/public_html/pplf1/pplf7.php",postParameters);

                         // store the result returned by PHP script that runs MySQL query
                         String result = response.toString();  
                         Context main =getActivity();
                         Intent intent = new Intent(FragmentTab1.this.getActivity(), AdvancedSearch.class);
                         intent.putExtra("newresult", result);
                         startActivity(intent);


                        }
                              catch (Exception e) {
                         Log.e("log_tag","Error in http connection!!" + e.toString());     
                        }

        }

             }         
            );

        return view;
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        setUserVisibleHint(true);
    }



    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position,
            long id) {
        // TODO Auto-generated method stub
         String item = parent.getItemAtPosition(position).toString();
         Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();

    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }

}
  • on which line you are getting exception. @Dikshay Poojary – Pankaj Kharche Jan 13 '14 at 09:17
  • it is a networkonmainthreadexception. If i use asynctask will i have to use a class for each internet access – Dikshay Poojary Jan 13 '14 at 09:25
  • possible duplicate of [android.os.NetworkOnMainThreadException](http://stackoverflow.com/questions/6343166/android-os-networkonmainthreadexception) – laalto Jan 13 '14 at 10:01
  • After looking your code i must say that you are working much on your main thread so you got NPE. But you can't do network UI operation in main thred. you have to work it with in background. So for that you have to use **AsyncTask** or **Thread**. – Piyush Jan 13 '14 at 10:01

1 Answers1

2

You cant use Network related code on the main thread. I guess you have to look at the AsyncTask implementation.