2011-05-29 18 views
5

सहायता! मैं वास्तव में स्टैक ओवरफ्लो और पिछले कुछ महीनों में योगदानकर्ताओं की सराहना करता हूं। मेरे पास कई प्रश्न हैं, मुझे यहां जवाब मिल गए हैं ... लेकिन यह मुझे कहीं भी नहीं मिल रहा है ... मैं जावा और एंड्रॉइड के लिए नोब हूं, और मैं इसे समझने की कोशिश कर रहा हूं दिनों के लिए बाहर। किसी कारण से मेरे पास फ़ाइल लिस्ट नामक एक सूची दृश्य वस्तु है, और यह शून्य लौट रहा है ... सबकुछ ठीक से संकलित होता है, लेकिन जब मैं फ़ाइललिस्ट का उपयोग करने का प्रयास करता हूं तो मुझे एक NullPointerException मिलता है ... मैं इसे इसकी घोषणा में अलग करने में सक्षम हूं:क्यों है (ListView) findViewById वापस लौट रहा है?

ListView fileList = (ListView)findViewById(R.id.open_ListView); 

लेकिन मैं यह समझ नहीं सकता कि इस लाइन के साथ क्या गलत है! मैंने नीचे बहुत सारे कोड शामिल किए हैं, सैद्धांतिक रूप से इसमें कोई भी और सभी कोड होना चाहिए जो किसी भी तरह से इस त्रुटि से संबंधित हो सकता है।

कृपया, इस पर किसी भी मदद की सराहना की जाएगी! धन्यवाद!


यह कोड का अपमानजनक अनुभाग है। यह केवल स्विच ब्लॉक का OPEN_DIALOG हिस्सा है, और अन्य सभी स्विच अपने नए डियालॉग को प्रदर्शित करने के लिए पूरी तरह से ठीक काम करते हैं। मैं सितारों के साथ हमलावर लाइन में चिह्नित किया है ...

@Override 
protected Dialog onCreateDialog(int id) 
{ 
    Dialog newDialog = new Dialog(Minervalia.this); 
    switch(id) 
    { 
    case DIALOG_FILE_NEW: 
     newDialog.setContentView(R.layout.new_file); 
     newDialog.setTitle("New File"); 
     newDialog.setCancelable(true); 

     Button okBtn = (Button) newDialog.findViewById(R.id.ok_btn); 
     Button cancelBtn = (Button) newDialog.findViewById(R.id.cancel_btn); 
     final EditText widthEt = (EditText) newDialog.findViewById(R.id.width_edit); 
     final EditText heightEt = (EditText) newDialog.findViewById(R.id.height_edit); 

     okBtn.setOnClickListener(new OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       file_width = Integer.parseInt(widthEt.getText().toString()); 
       file_height = Integer.parseInt(heightEt.getText().toString()); 
       onCreate(null); 
       dismissDialog(DIALOG_FILE_NEW); 
      } 
     }); 

     cancelBtn.setOnClickListener(new OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       dismissDialog(DIALOG_FILE_NEW); 
      } 
     }); 
     return newDialog; 
    case DIALOG_OPEN: 
     newDialog.setContentView(R.layout.open_file); 
     newDialog.setTitle("Open File"); 
     newDialog.setCancelable(true); 

// ********** This next line returns null! Why? 
     ListView fileList = (ListView)findViewById(R.id.open_ListView); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, loadFileList()); 
     fileList.setAdapter(adapter); 
     fileList.setTextFilterEnabled(true); 

     fileList.setOnItemClickListener(new OnItemClickListener() 
     { 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
      { 
       // When clicked, show a toast with the TextView text 
       Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     return newDialog; 
    case DIALOG_SAVE: 
     newDialog.setContentView(R.layout.save_file); 
     newDialog.setTitle("Save File"); 
     newDialog.setCancelable(true); 

//--==[[ Define the important TextViews for our Save Dialog ]]==--\\    
     TextView pathTxt = (TextView) newDialog.findViewById(R.id.save_path_info); 
     EditText fnTxt = (EditText) newDialog.findViewById(R.id.save_filename_edit); 

//--==[[ Define the Radio Buttons for our Save Dialog ]]==--\\   
     RadioButton JPEGoption = (RadioButton) newDialog.findViewById(R.id.save_JPEGoption); 
     RadioButton PNGoption = (RadioButton) newDialog.findViewById(R.id.save_PNGoption); 

     file_type = TYPE_JPEG; // Set this as the default option 

     JPEGoption.setOnClickListener(new OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       file_type = TYPE_JPEG; 
      } 
     }); 

     PNGoption.setOnClickListener(new OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       file_type = TYPE_PNG; 
      } 
     }); 

     Button save_okBtn = (Button) newDialog.findViewById(R.id.save_ok_btn); 
     Button save_cancelBtn = (Button) newDialog.findViewById(R.id.save_cancel_btn); 

     path = pathTxt.getText().toString(); 

     fnTxt.addTextChangedListener(new TextWatcher() 
     { 
      public void afterTextChanged(Editable s) 
      { 
      } 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) 
      { 
      } 
      public void onTextChanged(CharSequence s, int start, int before, int count) 
      { 
       filename = s.toString(); 
      } 
     }); 
     Toast.makeText(this, path, Toast.LENGTH_SHORT).show(); 
     Toast.makeText(this, filename, Toast.LENGTH_SHORT).show(); 
     save_okBtn.setOnClickListener(new OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       try 
       { 
        String fullName = path + filename; 
        Bitmap.CompressFormat compForm = Bitmap.CompressFormat.JPEG; // make sure our format is initialized 
        if(file_type == TYPE_JPEG) 
        { 
         fullName = fullName + ".jpg"; 
         compForm = Bitmap.CompressFormat.JPEG; 
        } 
        if(file_type == TYPE_PNG) 
        { 
         fullName = fullName + ".png"; 
         compForm = Bitmap.CompressFormat.PNG; 
        } 
        File thisImage = new File(fullName); 
        FileOutputStream out = new FileOutputStream(thisImage); 
        mBitmap.compress(compForm, 90, out); 

        new SingleMediaScanner(mContext, thisImage); 
        out.flush(); 
        out.close(); 
       } 
       catch (Exception e) 
       { 
        e.printStackTrace(); 
       } 

       dismissDialog(DIALOG_SAVE); 
      } 
     }); 

     save_cancelBtn.setOnClickListener(new OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       dismissDialog(DIALOG_SAVE); 
      } 
     }); 
     return newDialog; 
    } 
    return null; 
} 

private String[] loadFileList() 
{ 
    String[] mFileList = new String[0]; // generate empty array to avoid NullPointerException 
    try 
    { 
     filePath.canWrite(); 
    } 
    catch(SecurityException e) 
    { 
// Why isn't TAG recognized?... 
//   Log.e(TAG, "unable to write on the sd card " + e.toString()); 
    } 
    if(filePath.exists()) 
    { 
     FilenameFilter filter = new FilenameFilter() 
     { 
      public boolean accept(File dir, String filename) 
      { 
       File sel = new File(dir, filename); 
       return filename.contains(".jpg") || filename.contains(".png") || sel.isDirectory(); 
      } 
     }; 
     mFileList = filePath.list(filter); 
    } 
    else 
    { 
     mFileList = new String[0]; 
    } 
    return mFileList; 
} 

यह मेरा open_file.xml है:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <ListView 
     android:id="@+id/open_ListView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
    </ListView> 
    <LinearLayout 
     android:id="@+id/open_ButtonLinearLayout" 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal"> 
     <Button 
      android:id="@+id/open_ok_btn" 
      android:text="Open" 
      android:layout_width="150dp" 
      android:layout_height="wrap_content"> 
     </Button>  
     <Button 
      android:id="@+id/open_cancel_btn" 
      android:text="Cancel" 
      android:layout_width="150dp" 
      android:layout_height="wrap_content"> 
     </Button>  
    </LinearLayout> 
</LinearLayout> 

और ये मेरे list_item.xml है:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp" 
    android:textSize="16sp" > 
</TextView> 

उत्तर

8

बजाय इस प्रयास करें, गतिविधि नहीं की:

ListView fileList = (ListView)newDialog.findViewById(R.id.open_ListView); 
+0

हाँ! वह काम किया! आपको बहुत - बहुत धन्यवाद! ... और फिर आप इसे पोस्ट करने के बाद, और मैंने कोशिश की, मुझे एहसास हुआ कि मैं सबकुछ सब कुछ के साथ कर रहा था ... और कभी नहीं देखा ... दुह! धन्यवाद धन्यवाद धन्यवाद! –

4

करके देखें नेविगेट करके एक स्वच्छ निर्माण:

'प्रोजेक्ट' -> 'क्लीन ...' फिर अपनी परियोजना का चयन करें। के बाद से यह संवाद के लेआउट के अंदर

+0

विचित्र रूप से पर्याप्त, यह मेरे लिए काम करता था। – mahdaeng

+0

मेरे लिए भी काम किया। धन्यवाद गड़बड़! – conciliator

2

आप मेरी अंग्रेजी के लिए अपने code..before ListView fileList = (ListView)findViewById(R.id.open_ListView); ..sorry के शीर्ष पर setcontenetview लिखना चाहिए ....!

संबंधित मुद्दे