सहायता! मैं वास्तव में स्टैक ओवरफ्लो और पिछले कुछ महीनों में योगदानकर्ताओं की सराहना करता हूं। मेरे पास कई प्रश्न हैं, मुझे यहां जवाब मिल गए हैं ... लेकिन यह मुझे कहीं भी नहीं मिल रहा है ... मैं जावा और एंड्रॉइड के लिए नोब हूं, और मैं इसे समझने की कोशिश कर रहा हूं दिनों के लिए बाहर। किसी कारण से मेरे पास फ़ाइल लिस्ट नामक एक सूची दृश्य वस्तु है, और यह शून्य लौट रहा है ... सबकुछ ठीक से संकलित होता है, लेकिन जब मैं फ़ाइललिस्ट का उपयोग करने का प्रयास करता हूं तो मुझे एक 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>
हाँ! वह काम किया! आपको बहुत - बहुत धन्यवाद! ... और फिर आप इसे पोस्ट करने के बाद, और मैंने कोशिश की, मुझे एहसास हुआ कि मैं सबकुछ सब कुछ के साथ कर रहा था ... और कभी नहीं देखा ... दुह! धन्यवाद धन्यवाद धन्यवाद! –