0
我有這個問題...參考R.java文件不能正常工作
我的Android應用程序有一個設置菜單設置IP地址和圖像。我可以使用正則表達式驗證IP地址,並在我的設備的根目錄中查找圖像,但想法是用戶設置的圖像必須替換應用程序主要活動中的默認圖像。這樣做,我宣佈一個ImageView的和初始化從R.java文件正確的ID(即包含默認圖像的一個),然後按照以下說明更換:
Bitmap bmap = BitmapFactory.decodeFile(selectedFile.getAbsolutePath());
Drawable dra = new BitmapDrawable(bmap);
imagen.setImageDrawable(dra);
哪裏imagen畫質是ImageView的目的。但由於某種原因,當我運行這段代碼時,logcat顯示imagen爲空......這意味着,我在上面的代碼的第三行中得到NullPointerException ...
這裏是完整的設置菜單中的活動代碼:
public class pantallaConfiguracion extends Activity{
private static final int REQUEST_PICK_FILE = 1;
private EditText mFilePathTextView,ip;
private Button mStartActivityButton, volver, guardar;
private File selectedFile;
private ImageView imagen;
String dirIp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.configuraciones);
ip = (EditText) findViewById(R.id.entradaIP);
volver = (Button) findViewById(R.id.botonVolver);
guardar = (Button) findViewById(R.id.botonGuardar);
mFilePathTextView = (EditText)findViewById(R.id.entradaImg);
mStartActivityButton = (Button)findViewById(R.id.botonBrowse);
imagen = (ImageView) findViewById(R.id.imagen1);
volver.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
finish();
}
});
guardar.setOnClickListener(new OnClickListener(){
@SuppressWarnings("deprecation")
public void onClick(View v) {
dirIp = ip.getText().toString();
if(validarIp(dirIp) == false){
Toast.makeText(getApplicationContext(), "Dirección IP incorrecta.", Toast.LENGTH_SHORT).show();
}else{
Main.IP_Server = dirIp;
descargarDatos.IP_Server = dirIp;
enviarDatos.IP_Server = dirIp;
Bitmap bmap = BitmapFactory.decodeFile(selectedFile.getAbsolutePath());
Drawable dra = new BitmapDrawable(bmap);
imagen.setImageDrawable(dra);
Toast.makeText(getApplicationContext(), "Cambios Efectuados Correctamente.", Toast.LENGTH_SHORT).show();
}
}
private boolean validarIp(String dirIp) {
String patron = "(([0-1]?[0-9]{1,2}\\.)|(2[0-4][0-9]\\.)|(25[0-5]\\.)){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))";
Pattern expreg = Pattern.compile(patron);
Matcher m;
m = expreg.matcher(dirIp);
if(m.matches() == false){
return false;
}else{
return true;
}
}
});
mStartActivityButton.setOnClickListener(new OnClickListener(){
public void onClick(View v){
switch(v.getId()) {
case R.id.botonBrowse:
Intent intent = new Intent(pantallaConfiguracion.this, FilePicker.class);
startActivityForResult(intent, REQUEST_PICK_FILE);
break;
default:
break;
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_OK) {
switch(requestCode) {
case REQUEST_PICK_FILE:
if(data.hasExtra(FilePicker.EXTRA_FILE_PATH)) {
selectedFile = new File(data.getStringExtra(FilePicker.EXTRA_FILE_PATH));
mFilePathTextView.setText(selectedFile.getPath());
}
}
}
}
}
這裏是logcat的輸出:
04-02 13:40:17.671: E/AndroidRuntime(3139): FATAL EXCEPTION: main
04-02 13:40:17.671: E/AndroidRuntime(3139): java.lang.NullPointerException
04-02 13:40:17.671: E/AndroidRuntime(3139): at tian.proto.pantallaConfiguracion$2.onClick(pantallaConfiguracion.java:73)
04-02 13:40:17.671: E/AndroidRuntime(3139): at android.view.View.performClick(View.java:2485)
04-02 13:40:17.671: E/AndroidRuntime(3139): at android.view.View$PerformClick.run(View.java:9080)
04-02 13:40:17.671: E/AndroidRuntime(3139): at android.os.Handler.handleCallback(Handler.java:587)
04-02 13:40:17.671: E/AndroidRuntime(3139): at android.os.Handler.dispatchMessage(Handler.java:92)
04-02 13:40:17.671: E/AndroidRuntime(3139): at android.os.Looper.loop(Looper.java:130)
04-02 13:40:17.671: E/AndroidRuntime(3139): at android.app.ActivityThread.main(ActivityThread.java:3687)
04-02 13:40:17.671: E/AndroidRuntime(3139): at java.lang.reflect.Method.invokeNative(Native Method)
04-02 13:40:17.671: E/AndroidRuntime(3139): at java.lang.reflect.Method.invoke(Method.java:507)
04-02 13:40:17.671: E/AndroidRuntime(3139): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
04-02 13:40:17.671: E/AndroidRuntime(3139): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
04-02 13:40:17.671: E/AndroidRuntime(3139): at dalvik.system.NativeStart.main(Native Method)
預先感謝任何幫助,您可以給我!
發佈你的logcat .. – Pragnani
準備好了,我發佈了logcat –
什麼是73號線在上面的代碼..? – Pragnani