0

我有一個簡單的編輯文本對話框內,我點擊確定後輸入一些文本我有一個列表查看在一個片段,我需要添加該文本到我的listview在片段。簡單的列表視圖崩潰的應用程序

private void displayView(int position) { 
    // update the main content by replacing fragments 
    Fragment fragment = null; 
    switch (position) { 
    case 0: 
     fragment = new HomeFragment(); 
     break; 

這是我Homefragment:

import java.util.ArrayList; 
import java.util.List; 

import android.app.Activity; 
import android.app.Fragment; 
import android.app.ListActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ListView; 

public class HomeFragment extends Fragment { 
    public HomeFragment(){} 
    ListView lv; 
    List<String> li; 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_home, container, false); 
     lv = (ListView) getView().findViewById(R.id.itemslistView); 
     li=new ArrayList<String>(); 
     li.add("Apple"); 
     li.add("Mango"); 
     li.add("Orange"); 
     ArrayAdapter<String> adp=new ArrayAdapter<String> 
     (getActivity().getApplicationContext(),R.layout.list,li); 
     lv.setAdapter(adp); 
     return rootView; 
    } 
} 

當我運行這個應用程序被墜毀,我沒有得到在logcat中的任何錯誤。

這是我input_dialog:

protected void showInputDialog() { 

     // get prompts.xml view 
     LayoutInflater layoutInflater = LayoutInflater.from(MainActivity.this); 
     View promptView = layoutInflater.inflate(R.layout.input_dialog, null); 
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
       MainActivity.this); 
     alertDialogBuilder.setView(promptView); 

     // setup a dialog window 
     alertDialogBuilder 
       .setCancelable(false) 
       .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         dialog.cancel(); 
        } 
       }) 
       .setNegativeButton("Cancel", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           dialog.cancel(); 
          } 
         }); 

     // create an alert dialog 
     AlertDialog alert = alertDialogBuilder.create(); 
     alert.show(); 

    } 

這是我家的片段:

public class HomeFragment extends Fragment { 
    public HomeFragment() { 
    } 

    ListView lv; 
    List<String> li; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_home, container, 
       false); 
     lv = (ListView) rootView.findViewById(R.id.itemslistView); 

     View editView = inflater.inflate(R.layout.input_dialog, container, 
       false); 
     EditText edit = (EditText) editView.findViewById(R.id.txtlist); 
     String ItemName = edit.getText().toString(); 
     lv = (ListView) getView().findViewById(R.id.itemslistView); 
     li = new ArrayList<String>(); 
     li.add(ItemName); 
     ArrayAdapter<String> adp = new ArrayAdapter<String>(getActivity() 
       .getApplicationContext(), R.layout.list, li); 
     lv.setAdapter(adp); 
     return rootView; 

    } 
} 

回答

3

變化

lv = (ListView) getView().findViewById(R.id.itemslistView); 

lv = (ListView)rootView.findViewById(R.id.itemslistView); 

onCreateView(...)

+1

感謝您的時間..這做了魔術 – coder 2014-12-03 05:04:29

+0

@coder喲歡迎好友! – 2014-12-03 05:05:15

+0

@M DI有一個按鈕,如果我點擊按鈕時會出現一個帶有editext的對話框,並且當我試圖讓文本發生同樣的事情時,應用程序再次崩潰 – coder 2014-12-03 05:36:56

0

,而這樣做

lv = (ListView) getView().findViewById(R.id.itemslistView); 

你沒有得到的ListView的實例,從這個膨脹鑑於

View rootView = inflater.inflate(R.layout.fragment_home, container, false); 

所以在創建實例把它從rootview ....即

lv = (ListView) rootView.findViewById(R.id.itemslistView);