2013-12-20 54 views
0

在Home.java活動中擴展片段,我使用兩個按鈕自定義列表視圖。因此,我想在點擊按鈕時移動下一個活動。我使用Fragement和FragmentMangar代碼。但它不起作用。它給出了NullpointerException的錯誤。我也嘗試了Intent並發現了很多想法,但是沒有解決我的問題。片段內的導航頁面

Home.java

public class Home extends Fragment 
    { 
     StrictMode.ThreadPolicy thmod = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     JSONParser jParser = new JSONParser(); 
     private Handler handler; 
     private ListView home_lst; 
     private TextView home_txt_dt; 

     // JSON Node names 
     static final String TAG_SUCCESS = "success"; 
     static final String TAG_PRODUCTS = "customerdetail"; 
      static final String TAG_PID = "CId"; 
     static final String TAG_NAME = "Cname"; 
     public static final String TAG_BNAME = "Cbusinessname"; 
     public static final String TAG_Address = "Caddress"; 
     public static final String TAG_PHONE = "Cphone"; 
     public static final String TAG_TIME = "Cordertime"; 

     View rootview; 
     private ArrayList<HashMap<String, String>> productsList=new ArrayList<HashMap<String,String>>(); 
     ArrayList<String> ali = new ArrayList<String>(); 
     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) 
     { 
      rootview = inflater.inflate(R.layout.home, container,false); 
      StrictMode.setThreadPolicy(thmod); 
      Toast.makeText(getActivity(), "Home", Toast.LENGTH_LONG).show(); 
      getActivity().setTitle("Home"); 
      initialize(); 

      home_btn_setting.setOnClickListener(this); 
      home_btn_porder.setOnClickListener(this); 
      home_btn_help.setOnClickListener(this); 
     // home_lst.setOnItemClickListener(this); 
       // Loading products in Background Thread 
       new LoadAllProducts().execute(); 

      return rootview; 
     } 


     private void initialize() { 
      // TODO Auto-generated method stub 
      home_lst=(ListView)rootview.findViewById(R.id.home_lst); 
      home_txt_dt=(TextView)rootview.findViewById(R.id.home_dt); 

     } 

     public class LoadAllProducts extends AsyncTask <String,String,String>{ 

      private ProgressDialog pDialog; 
      private Ladapter ladapter; 

      /*protected Object doInBackground(Object... arg0) { 
       // TODO Auto-generated method stub 
       return null; 
      }*/ 
      @Override 
      protected void onPreExecute() { 
       // TODO Auto-generated method stub 
       super.onPreExecute(); 
       pDialog = new ProgressDialog(getActivity()); 
       pDialog.setMessage("Loading products. Please wait..."); 
       pDialog.setIndeterminate(false); 
       pDialog.setCancelable(false); 
       pDialog.show(); 
      } 

      @Override 
      protected String doInBackground(String... args) { 
       // TODO Auto-generated method stub 
       List<NameValuePair> params = new ArrayList<NameValuePair>(); 
       // getting JSON string from URL 
       JSONObject json = jParser.makeHttpRequest("url", "GET", params); 
       // Check your log cat for JSON reponse 

       try { 
        // Checking for SUCCESS TAG 
        int success = json.getInt(TAG_SUCCESS); 
        System.out.println("Success"+success); 
        if (success == 1) { 
         // products found 
         // Getting Array of Products 
         JSONArray products = json.getJSONArray(TAG_PRODUCTS); 

         // looping through All Products 
         for (int i = 0; i < products.length(); i++) 
         { 
          System.out.println(i); 
          JSONObject c = products.getJSONObject(i); 

          String CId = c.getString(TAG_PID); 
          String Cname = c.getString(TAG_NAME); 
          String Cbusinessname=c.getString(TAG_BNAME); 
          String Caddress = c.getString(TAG_Address); 
          String Cphone = c.getString(TAG_PHONE); 
          String Cordertime=c.getString(TAG_TIME); 
          HashMap<String, String> map = new HashMap<String, String>(); 
          ali.add(TAG_PID); 
          map.put(TAG_PID,"OrderId : "+CId); 
          map.put(TAG_TIME, Cordertime); 
          productsList.add(map); 
         } 
         System.out.println(productsList.size()); 
        } 
        else { 
         // no products found 
         // Launch Add New product Activity 
         System.out.println("There is no data"); 
         } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
       return json.toString(); 
      } 
      @Override 
      protected void onPostExecute(String result) { 
       // TODO Auto-generated method stub 
       super.onPostExecute(result); 
       pDialog.dismiss(); 
       // updating UI from Background Thread 

        try{ 
          // updating listview 
         ladapter = new Ladapter(getActivity(),R.layout.listitem,productsList); 
          home_lst.setAdapter(ladapter); 
        } 
         catch(Exception e) 
         { 
          e.printStackTrace(); 
         } 
      } 
     } 
     public void transpactivity(Fragment fragment1) 
     { 

       System.out.println("test activity :"+fragment1); 
       FragmentManager fragmentmanager = getFragmentManager(); 
       FragmentTransaction ft = fragmentmanager.beginTransaction(); 
       ft.replace(R.id.content_frame,fragment1).commit(); 
       Intent ine = new Intent(Intent.ACTION_VIEW);  
      System.out.println("test activity :"+fragment1); 
     } 
    } 

Ladapter.java

public class Ladapter extends BaseAdapter { 
     Fragment fragment=null; 
     Context context; 
     int layoutid; 
     ArrayList<HashMap<String, String>> al = new ArrayList<HashMap<String,String>>(); 
     public Ladapter(Context context, int layoutid,ArrayList<HashMap<String, String>> al) 
     { 
      this.context=context; 
      this.layoutid=layoutid; 
      this.al = al; 
     } 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return al.size(); 
     } 

     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return al.get(position); 
     } 

     @Override 
     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) 
     { 

      Listholder lh=null; 
      if(convertView==null) 
      { 
       LayoutInflater infltate = ((Activity) context).getLayoutInflater(); 
       convertView=infltate.inflate(layoutid, parent,false); 
       lh = new Listholder(); 
       lh.txt_oid = (TextView)convertView.findViewById(R.id.lst_txt_orderid); 
       lh.txt_time=(TextView)convertView.findViewById(R.id.lst_txt_time); 
       lh.img_cle=(ImageView)convertView.findViewById(R.id.lst_img_cle); 
       lh.img_ok=(ImageView)convertView.findViewById(R.id.lst_img_ok); 
       convertView.setTag(lh); 
      } 
      else 
      { 
       lh=(Listholder) convertView.getTag(); 
      } 
      HashMap<String, String> hst = new HashMap<String, String>(); 
      hst=al.get(position); 
      lh.txt_oid.setText(hst.get(Home.TAG_PID)); 
      lh.txt_time.setText("Received @ "+hst.get(Home.TAG_TIME)); 

      //Click event of Button cancle and ok 

      lh.img_cle.setOnClickListener(new View.OnClickListener() { //Cancel Button click event 

       @SuppressLint("NewApi") 
       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        System.out.println("Cancel button is click"); 
        fragment = new CancelOrder(); 
        nextactivity();    
       } 
      }); 
      lh.img_ok.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        fragment = new OrderTime(); 
        nextactivity(); 
       } 
      }); 
      return convertView; 
     } 

     class Listholder 
     { 

      public ImageView img_ok; 
      public ImageView img_cle; 
      public TextView txt_time; 
      public TextView txt_oid; 

     } 

     protected void nextactivity() { 
      // TODO Auto-generated method stub 
      if(fragment!=null) 
      { 
       Home hm = new Home(); 
       hm.transpactivity(fragment); 
      } 
      else 
      { 
       Toast.makeText(context, "There is no file", Toast.LENGTH_LONG).show(); 
      } 

     } 
    } 

錯誤

12-20 11:31:40.947: E/AndroidRuntime(1425): FATAL EXCEPTION: main 
12-20 11:31:40.947: E/AndroidRuntime(1425): java.lang.NullPointerException 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at android.content.ComponentName.<init>(ComponentName.java:75) 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at android.content.Intent.<init>(Intent.java:3004) 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at com.example.bluetoothapp.Home.transpactivity(Home.java:214) 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at com.example.bluetoothapp.Ladapter.nextactivity(Ladapter.java:127) 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at com.example.bluetoothapp.Ladapter$1.onClick(Ladapter.java:90) 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at android.view.View.performClick(View.java:3480) 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at android.view.View$PerformClick.run(View.java:13983) 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at android.os.Handler.handleCallback(Handler.java:605) 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at android.os.Handler.dispatchMessage(Handler.java:92) 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at android.os.Looper.loop(Looper.java:137) 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at android.app.ActivityThread.main(ActivityThread.java:4340) 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at java.lang.reflect.Method.invoke(Method.java:511) 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
12-20 11:31:40.947: E/AndroidRuntime(1425):  at dalvik.system.NativeStart.main(Native Method) 

Ladapter活性點擊取消或確定指針前進到nextactivity()方法的按鈕,並且當然後Home.java activity.Transpactivity()方法的Home.java活動,我越來越在begintranscation()中錯誤NullPointerException。repalce()。commit;

對不起,我無法發佈網址。

佈局Home.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/wallpaper7"> 

    <TextView 
     android:id="@+id/home_nm" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     android:text="@string/home_name" 
     android:textColor="#ffffff" 
     android:textSize="@dimen/text_size" /> 

    <TextView 
     android:id="@+id/home_dt" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/home_nm" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="22dp" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     android:text="@string/home_dt" 
     android:textSize="@dimen/text_size" /> 

    <TextView 
     android:id="@+id/home_ins" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/home_nm" 
     android:layout_marginTop="10dp" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:text="@string/home_btn_instruction" 
     android:textSize="@dimen/text_instruction" 
     android:textStyle="italic" /> 

    <Button 
     android:id="@+id/home_btn_setting" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/home_ins" 
     android:layout_marginLeft="@dimen/activity_horizontal_margin" 
     android:layout_marginTop="7dp" 
     android:text="@string/home_btn_nm1" 
     android:textSize="@dimen/home_btn_size"/> 

     <Button 
      android:id="@+id/home_btn_help" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignBaseline="@+id/home_btn_pastorder" 
      android:layout_alignBottom="@+id/home_btn_pastorder" 
      android:layout_marginLeft="19dp" 
      android:layout_toRightOf="@+id/home_btn_pastorder" 
      android:text="@string/home_btn_nm3" 
      android:textSize="@dimen/home_btn_size" /> 

    <TextView 
     android:id="@+id/home_order" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/home_btn_setting" 
     android:layout_marginTop="5dp" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:text="@string/home_new_order" 
     android:textSize="@dimen/text_instruction" 
     android:textStyle="bold" /> 

    <View 
     android:id="@+id/home_view" 
     android:layout_width="fill_parent" 
     android:layout_height="3dp" 
     android:layout_below="@+id/home_order" 
     android:background="#333333" /> 

     <ListView 
      android:id="@+id/home_lst" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/home_view" 
      android:layout_marginLeft="@dimen/activity_horizontal_margin" 
      android:layout_marginRight="@dimen/activity_horizontal_margin" 
      android:layout_marginTop="20dp" 
      android:background="#ffffff" /> 

    <Button 
     android:id="@+id/home_btn_pastorder" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/home_btn_setting" 
     android:layout_alignBottom="@+id/home_btn_setting" 
     android:layout_centerHorizontal="true" 
     android:paddingLeft="5dp" 
     android:paddingRight="5dp" 
     android:text="@string/home_btn_nm2" 
     android:textSize="@dimen/home_btn_size" /> 

</RelativeLayout> 

Ladapter佈局

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:layout_margin="@dimen/activity_horizontal_margin"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_marginRight="20dp"> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/lst_txt_orderid" 
     android:text="Order Id"/> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/lst_txt_time" 
     android:text="name"/> 
</LinearLayout> 
<ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/cancel1_mini" 
     android:layout_marginRight="40dp" 
     android:id="@+id/lst_img_cle"/> 
    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ok1_mini" 
     android:layout_gravity="end" 
     android:id="@+id/lst_img_ok"/> 
    </LinearLayout> 
+0

發表您的佈局,以及 –

回答

0

嘗試使用getChildFragmentManager()代替。 爲前:

public void transpactivity(Fragment fragment1) 
     { 

       System.out.println("test activity :"+fragment1); 
       FragmentManager fragmentmanager = getChildFragmentManager(); 
       FragmentTransaction ft = fragmentmanager.beginTransaction(); 
       ft.replace(R.id.content_frame,fragment1).commit(); 
       Intent ine = new Intent(Intent.ACTION_VIEW);  
      System.out.println("test activity :"+fragment1); 
     } 

內片段更換片段需要getChildFragmentManager()經理。

+0

我得到了一個錯誤 - AndroidRuntime(2304):java.lang.NoSuchMethodError:com.example.bluetoothapp.Home.getChildFragmentManager – user2893626

+0

更換支持庫在您的項目,並與最新的所有引用的庫版。 http://stackoverflow.com/questions/14378366/nosuchmethoderror-getchildfragmentmanager –

+0

仍然是同樣的error.I更新sdk和使用最新的庫 – user2893626