Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
disx
18 / 18 / 0
Регистрация: 26.02.2014
Сообщений: 481
#1

Передать String-путь в EditText AlertDialog'a ? - Android

19.02.2015, 12:27. Просмотров 1179. Ответов 28
Метки нет (Все метки)

Вызывается Алерт диалог, в нем кнопка выбора файла, выбираем файл, получаем его путь,

Java
1
String FilePath = intent.getData().getPath();
в Log.d путь пишет,
в этом же диалоге есть поле EditText, в него этот путь надо поместить:

делаю как-то так:

Java
1
edittext.setText(FilePath);
но такой вариант почему-то не проходит(ошибка), (не знаю где конкретно это должно быть), и постоянно ругается на эту строчку, а как все-таки надо подскажите ПОЖАЛУЙСТА?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2015, 12:27     Передать String-путь в EditText AlertDialog'a ?
Посмотрите здесь:

Android AlertDialog Error
Android Не показывается AlertDialog
Потоки и AlertDialog Android
Android Как передать данные в EditText
Custom AlertDialog Android
AlertDialog Android
Android Сравнение EditText и String
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
19.02.2015, 12:41     Передать String-путь в EditText AlertDialog'a ? #2
Какая ошибка?
disx
18 / 18 / 0
Регистрация: 26.02.2014
Сообщений: 481
19.02.2015, 12:59  [ТС]     Передать String-путь в EditText AlertDialog'a ? #3
Какая ошибка?
если эту строку поместить в onActivityResult, то такая
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=5, result=-1, data=Intent { dat=content://media/external/images/media/1 }} to activity {com.cribactivity/com.cribactivity.DB_Activity}: java.lang.NullPointerException

ну и такая at com.cribactivity.DB_Activity.onActivityResult(DB_Activity.java:468)
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
19.02.2015, 13:03     Передать String-путь в EditText AlertDialog'a ? #4
Давайте код - чё-то я не улавливаю, если чес...
disx
18 / 18 / 0
Регистрация: 26.02.2014
Сообщений: 481
19.02.2015, 13:12  [ТС]     Передать String-путь в EditText AlertDialog'a ? #5
Java
1
2
3
4
5
6
public void onklick2(View view) {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(intent, 5);
        }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
protected void onActivityResult(int requestCode, int resultCode, Intent data)
        {
           
                     if (requestCode == 5 && resultCode == RESULT_OK)
                     {
                        
                         FilePath = data.getData().getPath();
                        //Toast tost = Toast.makeText(getApplicationContext(), FilePath, Toast.LENGTH_SHORT);
                         //tost.show();
                         Log.d(TAG, ""+FilePath);
                         textPath.setText(FilePath);
                     }else{
                         Log.d(TAG, "Erorr");
                     }
                     
        }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
protected Dialog onCreateDialog(int id) {
 
            
                LayoutInflater inflater = LayoutInflater.from(this);
                
                make=(Button)findViewById(R.id.buttonD1);
                
                select=(Button)findViewById(R.id.buttonD2);
                write=(Button)findViewById(R.id.buttonD3);
                View root = inflater.inflate(R.layout.dial2, null);
                TextView text=(TextView)findViewById(R.id.textDF);
                textPath = (EditText) findViewById(R.id.editTextPath);
                 
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setView(root);
                builder.setTitle(R.string.title_edit);
                builder.setPositiveButton("Ок",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
            
                    dialog.cancel();
                            
                            }                   });
                builder.setNegativeButton("Отмена",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
 
                                dialog.cancel();
                                cursor.requery();
                            }
                        });
 
                builder.setCancelable(false);
                removeDialog(id);
                return builder.create();
                    
            }
 
        }
Нужно в EditText диалога "закатать" путь выбранной картинки(файла) для последующего обращения к ней и сохранения этого пути в базе.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
19.02.2015, 13:38     Передать String-путь в EditText AlertDialog'a ? #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вы из одной активити вызвали другую активити.
Из другой активити в первую отправили некий результат и пытетесь присвоить значение некоему объекту, которого нет и в помине - диалога-то нет еще...

Снесите
Java
1
textPath.setText(FilePath);
из onActivityResult в onCreateDialog

Java
1
2
3
4
5
6
7
8
...
TextView text=(TextView)findViewById(R.id.textDF);
textPath = (EditText) findViewById(R.id.editTextPath);
 
textPath.setText(FilePath);
 
AlertDialog.Builder builder = new AlertDialog.Builder(this);
....
P.S. Вообще-то работать с полудохлыми инструментами как-то не комильфо...
Dialog onCreateDialog(int id, Bundle args)
This method was deprecated in API level 13. Use the new DialogFragment class with FragmentManager instead; this is also available on older platforms through the Android compatibility package.

Dialog onCreateDialog(int id)
This method was deprecated in API level 8. Old no-arguments version of onCreateDialog(int, Bundle).
disx
18 / 18 / 0
Регистрация: 26.02.2014
Сообщений: 481
19.02.2015, 13:52  [ТС]     Передать String-путь в EditText AlertDialog'a ? #7
Armagedo, ну таки да, ..., а все таки, как передать когда уже есть диалог?
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
19.02.2015, 13:57     Передать String-путь в EditText AlertDialog'a ? #8
Так я же вроде бы написал...
Снесите
Java
1
textPath.setText(FilePath);
из onActivityResult в onCreateDialog

Java
1
2
3
4
5
6
7
8
...
TextView text=(TextView)findViewById(R.id.textDF);
textPath = (EditText) findViewById(R.id.editTextPath);
 
textPath.setText(FilePath);
 
AlertDialog.Builder builder = new AlertDialog.Builder(this);
....
Или чё?
disx
18 / 18 / 0
Регистрация: 26.02.2014
Сообщений: 481
19.02.2015, 15:45  [ТС]     Передать String-путь в EditText AlertDialog'a ? #9
Armagedo,
Или чё?
тупанул...

поставил как Вы сказали, сыпется по кнопке вызова диалога,..

при этом ругается на showDialog(DIALOG) ;

и на textPath.setText(FilePath);

а если textPath.setText(FilePath) закоментить, диалог нормально запускается.

че ж не так, то?
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
19.02.2015, 16:04     Передать String-путь в EditText AlertDialog'a ? #10
Ну, выложи весь код своей активити...чё гадать-то
disx
18 / 18 / 0
Регистрация: 26.02.2014
Сообщений: 481
19.02.2015, 16:30  [ТС]     Передать String-путь в EditText AlertDialog'a ? #11
Armagedo, я просто переживаю, что в моем говнокоде трудно разобраться
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
package com.cribactivity;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import org.w3c.dom.Text;
 
import com.cribactivity.FileDialog.onSubmitListener;
 
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
 
public class DB_Activity extends Activity implements onSubmitListener{
 
    final int TYPE_PHOTO = 1;
    final int REQUEST_CODE_PHOTO = 1;
    private static final int CM_DELETE_ID = 1;
    private static final int PICKFILE_RESULT_CODE = 1;
    private static final String NAMESPACE = null;
    private static final int PHOTO = 0;
    private static final int DIALOG_EXIT = 0;
    ListView lvData, lvData2;
    String FilePath;
    DB db;
    Button btnCancel, buttonPick, make, select, write;
    SimpleCursorAdapter scAdapter;
    Cursor cursor;
    EditText et, textPath;
    String arg, ar;
    int id_predm;
    TextView tv;
    File directory;
    File file = null;
    View img;
    final String TAG = "myLogs";
    
//   String[] Predmet = getResources().getStringArray(R.array.predlist);
 
    String[] Predmet = { "Математика", "Русский", "Инглиш", "Физика", "", "",
            "" };
 
    /** Called when the activity is first created. */
    @SuppressLint({ "NewApi", "SdCardPath" })
    @SuppressWarnings({ "deprecation" })
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.db_activity);
        et = (EditText) findViewById(R.id.editText1);
          Button buttonPick = (Button) findViewById(R.id.btnPick);
          
           
           buttonPick.setOnClickListener(new Button.OnClickListener(){
 
                
                @Override
               public void onClick(View v) {
                    showDialog(DIALOG_EXIT);
                    
                    // TODO Auto-generated method stub
//                  Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//                  intent2.putExtra(MediaStore.EXTRA_OUTPUT, generateFileUri());
//                  startActivityForResult(intent2, REQUEST_CODE_PHOTO);
//                  
            }}); 
            
        btnCancel = (Button) findViewById(R.id.button2);
        btnCancel.setOnClickListener(new OnClickListener() {
            
            
 
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                onBackPressed();
            }
        });
       
        // Получаем экземпляр элемента Spinner
        final Spinner spinner = (Spinner) findViewById(R.id.spinner1);
 
        // Настраиваем адаптер
        ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this,
                R.array.predlist, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 
        // Вызываем адаптер
        spinner.setAdapter(adapter);
        spinner.setSelection(0);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> parent,
                    View itemSelected, int selectedItemPosition, long selectedId) {
                id_predm = selectedItemPosition;
                arg = Predmet[selectedItemPosition];
                PredmetStart(arg);
                
                return;
                
            }
 
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
 
        adapter.notifyDataSetChanged();
        // -------------------------------------------------------------
 
        // открываем подключение к БД
        db = new DB(this);
        db.open();
 
        cursor = db.getAllData(arg);
        startManagingCursor(cursor);
 
        // формируем столбцы сопоставления
        String[] from = new String[] { DB.COLUMN_IMG, DB.COLUMN_TXT };
        int[] to = new int[] { R.id.ivImg, R.id.tvText };
 
        // создааем адаптер и настраиваем список
        scAdapter = new SimpleCursorAdapter(this, R.layout.item, cursor, from,
                to);
        lvData = (ListView) findViewById(R.id.lvData);
        lvData.setAdapter(scAdapter);
 
        // добавляем контекстное меню к списку
        registerForContextMenu(lvData);
 
        lvData.setOnItemClickListener(new OnItemClickListener() {
            @SuppressWarnings("unused")
            private int getSelectedItemPosition() {
                // TODO Auto-generated method stub
 
                return 0;
            }
 
            
            
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // final View img = (View)findViewById(R.drawable.ic_launcher);
                final EditText textEmail = (EditText) findViewById(R.id.editText1);
                // cursor.moveToPosition(this.getSelectedItemPosition());
                // int id_col = cursor.getInt(0);
                // img.setView(cursor.getString(1));
                textEmail.setText(cursor.getString(2));
 
                // ContentValues val=new ContentValues(2);
                // val.put(DB.COLUMN_IMG, textName.getText().toString());
                // val.put(DB.COLUMN_TXT, textEmail.getText().toString());
                // cursor.requery();
                // TODO Auto-generated method stub
            }
        });
 
 
    //   createDir("/mnt/sdcard/Cribe/Photo");
     
//     String sdState = android.os.Environment.getExternalStorageState(); 
//       if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) { 
//           File baseDir = android.os.Environment.getExternalStorageDirectory(); 
//           File directory = new File(baseDir, NAMESPACE); 
//           if (!directory.exists()) 
//               directory.mkdirs(); 
//       } else { 
//           //тут другую выбираем 
//       } 
 
    }
    
     
     @SuppressLint("SdCardPath") private Uri generateFileUri() {
            
              file = new File(/*directory.getPath(FilePath)*/"/mnt/sdcard/Cribe/Photo" + "/" + "photo_"
                  + System.currentTimeMillis() + ".jpg");
                    Log.d(TAG, "fileName = " + file);
            
            return Uri.fromFile(file);
                    
          }
     
     public void onButtonClick(View view) {
            if (Predmet[id_predm] == "Математика") {
                // добавляем запись
                    if(file!=null){         
                db.addRec(et.getText().toString(), R.drawable.andr, FilePath);
                // обновляем курсор
 
                cursor.requery();
                Log.d(TAG, "Добавилась запись");
                    }else{
                        Toast tost = Toast.makeText(getApplicationContext(), "Нет ссылки на файл", Toast.LENGTH_LONG);
                        tost.show();
                    }
 
            }
            
            if (Predmet[id_predm] == "Русский") {
 
                // добавляем запись
                db.addRec2(et.getText().toString() + (cursor.getCount() + 1),
                        R.drawable.andr);
                // обновляем курсор
                cursor.requery();
            }
            return;
        }
 
   
     public static  void createDir(String folder) {
         File f1 = new File(folder); //Создаем файловую переменную
         if (!f1.exists()) { //Если папка не существует
                 f1.mkdirs();  //создаем её
         }
 }
//   protected void onActivityResult(int requestCode, int resultCode, Intent intent2) {
//          // TODO Auto-generated method stub
//                  if (requestCode == REQUEST_CODE_PHOTO) {
//                        if (resultCode == RESULT_OK) {
//                      FilePath= intent2.getData().getPath();
//                            //FilePath=file.toString();
//                          //  textPath.setText(FilePath);               
//                            Log.d(TAG, "Photo uri: " + intent2.getData());
//                        } else if (resultCode == RESULT_CANCELED) {
//                          Log.d(TAG, "Canceled");
//                          et.setText("Empty");
//                        }
//                       
//                      }
//              
//          }
//                  
        
     
     @SuppressLint("CutPasteId") public void PredmetStart(String arg) {
 
        if (arg == "Русский") {
            // получаем курсор
            cursor = db.getAllData2();
            startManagingCursor(cursor);
            // формируем столбцы сопоставления
            String[] from = new String[] { DB.COLUMN_IMG2, DB.COLUMN_TXT2 };
            int[] to = new int[] { R.id.ivImg, R.id.tvText };
            @SuppressWarnings("deprecation")
            SimpleCursorAdapter adapterR = new SimpleCursorAdapter(this,
                    R.layout.item, cursor, from, to);
            lvData2 = (ListView) findViewById(R.id.lvData);
            lvData2.setAdapter(adapterR);
            adapterR.notifyDataSetChanged();
 
            cursor.requery();
        }
        //return;
 
        if (arg == "Математика") {
            // получаем курсор
            // получаем курсор
             cursor = db.getAllData(arg);
             startManagingCursor(cursor);
            // // формируем столбцы сопоставления
             String[] from = new String[] { DB.COLUMN_IMG, DB.COLUMN_TXT };
             int[] to = new int[] { R.id.ivImg, R.id.tvText };
 
             @SuppressWarnings("deprecation")
            SimpleCursorAdapter scAdapter = new SimpleCursorAdapter(this,
             R.layout.item, cursor, from, to);
             lvData=(ListView)findViewById(R.id.lvData);
            lvData.setAdapter(scAdapter);
            scAdapter.notifyDataSetChanged();
 
            cursor.requery();
        }
 
        //return;
    }
 
    // void Math(String arg){
    // }
    // обработка нажатия кнопки
 
    
    
    
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        menu.add(0, CM_DELETE_ID, 0, R.string.delete_record);
 
    }
 
    public boolean onContextItemSelected(MenuItem item) {
        if (item.getItemId() == CM_DELETE_ID) {
            if (Predmet[id_predm] == "Математика") { // получаем из пункта
                                                        // контекстного меню
                                                        // данные по пункту
                                                        // списка
                AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
                        .getMenuInfo();
                // извлекаем id записи и удаляем соответствующую запись в БД
                db.delRec(acmi.id);
                // обновляем курсор
                cursor.requery();
 
                return true;
            }
            if (Predmet[id_predm] == "Русский") { // получаем из пункта
                                                    // контекстного меню данные
                                                    // по пункту списка
                AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
                        .getMenuInfo();
                // извлекаем id записи и удаляем соответствующую запись в БД
                db.delRec2(acmi.id);
                // обновляем курсор
                cursor.requery();
 
                return true;
            }
            return true;
        }
        return super.onContextItemSelected(item);
    }
 
    protected void onDestroy() {
        super.onDestroy();
        // закрываем подключение при выходе
        db.close();
    }
    
        
        
        public void onkl1(View view) {
            Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent2.putExtra(MediaStore.EXTRA_OUTPUT, generateFileUri());
            startActivityForResult(intent2, REQUEST_CODE_PHOTO);
 
            
        }
        public void onkl2(View view) {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(intent, 5);
        }
        protected void onActivityResult(int requestCode, int resultCode, Intent data)
        {
           
          
                     if (requestCode == 5 && resultCode == RESULT_OK)
                     {
                        
                         FilePath = data.getData().getPath();
//                       Uri chosenImageUri = data.getData();
//                       chosenImageUri.getPath();
//                      
//                       final Cursor cursor = getContentResolver().query( chosenImageUri, null, null, null, null );
//                       cursor.moveToFirst();
//                       final String filePath = cursor.getString(0);
//                       cursor.close();
                         Toast tost = Toast.makeText(getApplicationContext(), FilePath, Toast.LENGTH_SHORT);
                         tost.show();
                         Log.d(TAG, ""+FilePath);
                         
                     }else{
                         Log.d(TAG, "Erorr");
                     }
                     
        }
 
        public void onkl3(View view) {
            showDialog(DIALOG_EXIT);
            
        }
        
        @SuppressWarnings("deprecation")
        protected void onPrepareDialog(int id, Dialog dialog) {
            super.onPrepareDialog(id, dialog);
 
             removeDialog(id);
        }
 
        protected Dialog onCreateDialog(int id) {
 
            switch (id) {
            case DIALOG_EXIT:
                LayoutInflater inflater = LayoutInflater.from(this);
                
                make=(Button)findViewById(R.id.buttonD1);
                select=(Button)findViewById(R.id.buttonD2);
                write=(Button)findViewById(R.id.buttonD3);
                View root = inflater.inflate(R.layout.dial2, null);
                TextView text=(TextView)findViewById(R.id.textDF);
                textPath = (EditText) findViewById(R.id.editTextPath);
                textPath.setText(FilePath);
 
                 
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setView(root);
                builder.setTitle(R.string.title_edit);
                builder.setPositiveButton("Ок",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                            
                                dialog.cancel();
                            
                            }                   });
                builder.setNegativeButton("Отмена",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
 
                                dialog.cancel();
                                cursor.requery();
                            }
                        });
 
                builder.setCancelable(true);
                removeDialog(id);
                return builder.create();
            default:
                return null;
            }           
        }
         public void setOnSubmitListener(String arg) {
            textPath.setText(arg);
          }
}
disx
18 / 18 / 0
Регистрация: 26.02.2014
Сообщений: 481
19.02.2015, 16:30  [ТС]     Передать String-путь в EditText AlertDialog'a ? #12
Armagedo, я просто переживаю, что в моем говнокоде трудно разобраться
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
package com.cribactivity;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import org.w3c.dom.Text;
 
import com.cribactivity.FileDialog.onSubmitListener;
 
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
 
public class DB_Activity extends Activity implements onSubmitListener{
 
    final int TYPE_PHOTO = 1;
    final int REQUEST_CODE_PHOTO = 1;
    private static final int CM_DELETE_ID = 1;
    private static final int PICKFILE_RESULT_CODE = 1;
    private static final String NAMESPACE = null;
    private static final int PHOTO = 0;
    private static final int DIALOG_EXIT = 0;
    ListView lvData, lvData2;
    String FilePath;
    DB db;
    Button btnCancel, buttonPick, make, select, write;
    SimpleCursorAdapter scAdapter;
    Cursor cursor;
    EditText et, textPath;
    String arg, ar;
    int id_predm;
    TextView tv;
    File directory;
    File file = null;
    View img;
    final String TAG = "myLogs";
    
//   String[] Predmet = getResources().getStringArray(R.array.predlist);
 
    String[] Predmet = { "Математика", "Русский", "Инглиш", "Физика", "", "",
            "" };
 
    /** Called when the activity is first created. */
    @SuppressLint({ "NewApi", "SdCardPath" })
    @SuppressWarnings({ "deprecation" })
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.db_activity);
        et = (EditText) findViewById(R.id.editText1);
          Button buttonPick = (Button) findViewById(R.id.btnPick);
          
           
           buttonPick.setOnClickListener(new Button.OnClickListener(){
 
                
                @Override
               public void onClick(View v) {
                    showDialog(DIALOG_EXIT);
                    
                    // TODO Auto-generated method stub
//                  Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//                  intent2.putExtra(MediaStore.EXTRA_OUTPUT, generateFileUri());
//                  startActivityForResult(intent2, REQUEST_CODE_PHOTO);
//                  
            }}); 
            
        btnCancel = (Button) findViewById(R.id.button2);
        btnCancel.setOnClickListener(new OnClickListener() {
            
            
 
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                onBackPressed();
            }
        });
       
        // Получаем экземпляр элемента Spinner
        final Spinner spinner = (Spinner) findViewById(R.id.spinner1);
 
        // Настраиваем адаптер
        ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this,
                R.array.predlist, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 
        // Вызываем адаптер
        spinner.setAdapter(adapter);
        spinner.setSelection(0);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> parent,
                    View itemSelected, int selectedItemPosition, long selectedId) {
                id_predm = selectedItemPosition;
                arg = Predmet[selectedItemPosition];
                PredmetStart(arg);
                
                return;
                
            }
 
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
 
        adapter.notifyDataSetChanged();
        // -------------------------------------------------------------
 
        // открываем подключение к БД
        db = new DB(this);
        db.open();
 
        cursor = db.getAllData(arg);
        startManagingCursor(cursor);
 
        // формируем столбцы сопоставления
        String[] from = new String[] { DB.COLUMN_IMG, DB.COLUMN_TXT };
        int[] to = new int[] { R.id.ivImg, R.id.tvText };
 
        // создааем адаптер и настраиваем список
        scAdapter = new SimpleCursorAdapter(this, R.layout.item, cursor, from,
                to);
        lvData = (ListView) findViewById(R.id.lvData);
        lvData.setAdapter(scAdapter);
 
        // добавляем контекстное меню к списку
        registerForContextMenu(lvData);
 
        lvData.setOnItemClickListener(new OnItemClickListener() {
            @SuppressWarnings("unused")
            private int getSelectedItemPosition() {
                // TODO Auto-generated method stub
 
                return 0;
            }
 
            
            
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // final View img = (View)findViewById(R.drawable.ic_launcher);
                final EditText textEmail = (EditText) findViewById(R.id.editText1);
                // cursor.moveToPosition(this.getSelectedItemPosition());
                // int id_col = cursor.getInt(0);
                // img.setView(cursor.getString(1));
                textEmail.setText(cursor.getString(2));
 
                // ContentValues val=new ContentValues(2);
                // val.put(DB.COLUMN_IMG, textName.getText().toString());
                // val.put(DB.COLUMN_TXT, textEmail.getText().toString());
                // cursor.requery();
                // TODO Auto-generated method stub
            }
        });
 
 
    //   createDir("/mnt/sdcard/Cribe/Photo");
     
//     String sdState = android.os.Environment.getExternalStorageState(); 
//       if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) { 
//           File baseDir = android.os.Environment.getExternalStorageDirectory(); 
//           File directory = new File(baseDir, NAMESPACE); 
//           if (!directory.exists()) 
//               directory.mkdirs(); 
//       } else { 
//           //тут другую выбираем 
//       } 
 
    }
    
     
     @SuppressLint("SdCardPath") private Uri generateFileUri() {
            
              file = new File(/*directory.getPath(FilePath)*/"/mnt/sdcard/Cribe/Photo" + "/" + "photo_"
                  + System.currentTimeMillis() + ".jpg");
                    Log.d(TAG, "fileName = " + file);
            
            return Uri.fromFile(file);
                    
          }
     
     public void onButtonClick(View view) {
            if (Predmet[id_predm] == "Математика") {
                // добавляем запись
                    if(file!=null){         
                db.addRec(et.getText().toString(), R.drawable.andr, FilePath);
                // обновляем курсор
 
                cursor.requery();
                Log.d(TAG, "Добавилась запись");
                    }else{
                        Toast tost = Toast.makeText(getApplicationContext(), "Нет ссылки на файл", Toast.LENGTH_LONG);
                        tost.show();
                    }
 
            }
            
            if (Predmet[id_predm] == "Русский") {
 
                // добавляем запись
                db.addRec2(et.getText().toString() + (cursor.getCount() + 1),
                        R.drawable.andr);
                // обновляем курсор
                cursor.requery();
            }
            return;
        }
 
   
     public static  void createDir(String folder) {
         File f1 = new File(folder); //Создаем файловую переменную
         if (!f1.exists()) { //Если папка не существует
                 f1.mkdirs();  //создаем её
         }
 }
//   protected void onActivityResult(int requestCode, int resultCode, Intent intent2) {
//          // TODO Auto-generated method stub
//                  if (requestCode == REQUEST_CODE_PHOTO) {
//                        if (resultCode == RESULT_OK) {
//                      FilePath= intent2.getData().getPath();
//                            //FilePath=file.toString();
//                          //  textPath.setText(FilePath);               
//                            Log.d(TAG, "Photo uri: " + intent2.getData());
//                        } else if (resultCode == RESULT_CANCELED) {
//                          Log.d(TAG, "Canceled");
//                          et.setText("Empty");
//                        }
//                       
//                      }
//              
//          }
//                  
        
     
     @SuppressLint("CutPasteId") public void PredmetStart(String arg) {
 
        if (arg == "Русский") {
            // получаем курсор
            cursor = db.getAllData2();
            startManagingCursor(cursor);
            // формируем столбцы сопоставления
            String[] from = new String[] { DB.COLUMN_IMG2, DB.COLUMN_TXT2 };
            int[] to = new int[] { R.id.ivImg, R.id.tvText };
            @SuppressWarnings("deprecation")
            SimpleCursorAdapter adapterR = new SimpleCursorAdapter(this,
                    R.layout.item, cursor, from, to);
            lvData2 = (ListView) findViewById(R.id.lvData);
            lvData2.setAdapter(adapterR);
            adapterR.notifyDataSetChanged();
 
            cursor.requery();
        }
        //return;
 
        if (arg == "Математика") {
            // получаем курсор
            // получаем курсор
             cursor = db.getAllData(arg);
             startManagingCursor(cursor);
            // // формируем столбцы сопоставления
             String[] from = new String[] { DB.COLUMN_IMG, DB.COLUMN_TXT };
             int[] to = new int[] { R.id.ivImg, R.id.tvText };
 
             @SuppressWarnings("deprecation")
            SimpleCursorAdapter scAdapter = new SimpleCursorAdapter(this,
             R.layout.item, cursor, from, to);
             lvData=(ListView)findViewById(R.id.lvData);
            lvData.setAdapter(scAdapter);
            scAdapter.notifyDataSetChanged();
 
            cursor.requery();
        }
 
        //return;
    }
 
    // void Math(String arg){
    // }
    // обработка нажатия кнопки
 
    
    
    
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        menu.add(0, CM_DELETE_ID, 0, R.string.delete_record);
 
    }
 
    public boolean onContextItemSelected(MenuItem item) {
        if (item.getItemId() == CM_DELETE_ID) {
            if (Predmet[id_predm] == "Математика") { // получаем из пункта
                                                        // контекстного меню
                                                        // данные по пункту
                                                        // списка
                AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
                        .getMenuInfo();
                // извлекаем id записи и удаляем соответствующую запись в БД
                db.delRec(acmi.id);
                // обновляем курсор
                cursor.requery();
 
                return true;
            }
            if (Predmet[id_predm] == "Русский") { // получаем из пункта
                                                    // контекстного меню данные
                                                    // по пункту списка
                AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
                        .getMenuInfo();
                // извлекаем id записи и удаляем соответствующую запись в БД
                db.delRec2(acmi.id);
                // обновляем курсор
                cursor.requery();
 
                return true;
            }
            return true;
        }
        return super.onContextItemSelected(item);
    }
 
    protected void onDestroy() {
        super.onDestroy();
        // закрываем подключение при выходе
        db.close();
    }
    
        
        
        public void onkl1(View view) {
            Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent2.putExtra(MediaStore.EXTRA_OUTPUT, generateFileUri());
            startActivityForResult(intent2, REQUEST_CODE_PHOTO);
 
            
        }
        public void onkl2(View view) {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(intent, 5);
        }
        protected void onActivityResult(int requestCode, int resultCode, Intent data)
        {
           
          
                     if (requestCode == 5 && resultCode == RESULT_OK)
                     {
                        
                         FilePath = data.getData().getPath();
//                       Uri chosenImageUri = data.getData();
//                       chosenImageUri.getPath();
//                      
//                       final Cursor cursor = getContentResolver().query( chosenImageUri, null, null, null, null );
//                       cursor.moveToFirst();
//                       final String filePath = cursor.getString(0);
//                       cursor.close();
                         Toast tost = Toast.makeText(getApplicationContext(), FilePath, Toast.LENGTH_SHORT);
                         tost.show();
                         Log.d(TAG, ""+FilePath);
                         
                     }else{
                         Log.d(TAG, "Erorr");
                     }
                     
        }
 
        public void onkl3(View view) {
            showDialog(DIALOG_EXIT);
            
        }
        
        @SuppressWarnings("deprecation")
        protected void onPrepareDialog(int id, Dialog dialog) {
            super.onPrepareDialog(id, dialog);
 
             removeDialog(id);
        }
 
        protected Dialog onCreateDialog(int id) {
 
            switch (id) {
            case DIALOG_EXIT:
                LayoutInflater inflater = LayoutInflater.from(this);
                
                make=(Button)findViewById(R.id.buttonD1);
                select=(Button)findViewById(R.id.buttonD2);
                write=(Button)findViewById(R.id.buttonD3);
                View root = inflater.inflate(R.layout.dial2, null);
                TextView text=(TextView)findViewById(R.id.textDF);
                textPath = (EditText) findViewById(R.id.editTextPath);
                textPath.setText(FilePath);
 
                 
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setView(root);
                builder.setTitle(R.string.title_edit);
                builder.setPositiveButton("Ок",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                            
                                dialog.cancel();
                            
                            }                   });
                builder.setNegativeButton("Отмена",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
 
                                dialog.cancel();
                                cursor.requery();
                            }
                        });
 
                builder.setCancelable(true);
                removeDialog(id);
                return builder.create();
            default:
                return null;
            }           
        }
         public void setOnSubmitListener(String arg) {
            textPath.setText(arg);
          }
}
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
19.02.2015, 16:51     Передать String-путь в EditText AlertDialog'a ? #13
нормальный полигон...боевых действий.

Правда я так и не понял, где вызываются эти onkl1, onkl2, onkl3...

Попробуй инициализировать для эксперимента переменную FilePath начальным значением при старте.

Java
1
String FilePath = "Мне никто ничего не присвоил :(";
disx
18 / 18 / 0
Регистрация: 26.02.2014
Сообщений: 481
19.02.2015, 20:17  [ТС]     Передать String-путь в EditText AlertDialog'a ? #14
Armagedo,
нормальный полигон...боевых действий.
да ужж...

Правда я так и не понял, где вызываются эти onkl1, onkl2, onkl3...
да куда им вызываться? хоть бы с одним разобраться...

инициализировал, ничо не изменилось... пи.дос какой-то...
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
19.02.2015, 20:25     Передать String-путь в EditText AlertDialog'a ? #15
Цитата Сообщение от disx Посмотреть сообщение
да куда им вызываться? хоть бы с одним разобраться...
Так по коду только в них идет старт новых активностей с возвратом результата в текущую
А они нигде не вызываются...как тогда происходит запуск этих новых активностей?

Цитата Сообщение от disx Посмотреть сообщение
инициализировал, ничо не изменилось... пи.дос какой-то...
Шо хоть за ошибку пишет?
disx
18 / 18 / 0
Регистрация: 26.02.2014
Сообщений: 481
19.02.2015, 22:34  [ТС]     Передать String-путь в EditText AlertDialog'a ? #16
А они нигде не вызываются...как тогда происходит запуск этих новых активностей?
забанил все лишние онклики.. на всякий случай...

at com.cribactivity.DB_Activity.onCreateDialog(DB_Activity.java:501)
at com.cribactivity.DB_Activity.onclickB(DB_Activity.java:436)
Добавлено через 55 минут
Armagedo, когда появляется диалог там 3 кнопки одна из них onkl2:

Java
1
2
3
4
5
6
7
public void onkl2(View view) {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(intent, 5);
 
        }
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
19.02.2015, 22:52     Передать String-путь в EditText AlertDialog'a ? #17
Цитата Сообщение от disx Посмотреть сообщение
Armagedo, когда появляется диалог там 3 кнопки одна из них onkl2:
Кнопки - это баттоны и они объявлены
Java
1
Button btnCancel, buttonPick, make, select, write;
и из них на форме диалога находятся make, select, write

Java
1
2
3
make=(Button)findViewById(R.id.buttonD1);
                select=(Button)findViewById(R.id.buttonD2);
                write=(Button)findViewById(R.id.buttonD3);

А onkl1, onkl2, onkl3 - это методы класса DB_Activity, которые в указанном коде ни разу и ни откуда не вызываются.
Поэтому я и спрашиваю - где происходит запуск других активностей...
androbro
319 / 279 / 55
Регистрация: 17.10.2014
Сообщений: 826
20.02.2015, 09:17     Передать String-путь в EditText AlertDialog'a ? #18
Armagedo,
Цитата Сообщение от Armagedo Посмотреть сообщение
А onkl1, onkl2, onkl3 - это методы класса DB_Activity, которые в указанном коде ни разу и ни откуда не вызываются.
да в разметке по всей видимости у него на батонах явно прописаны вызовы этих методов
disx
18 / 18 / 0
Регистрация: 26.02.2014
Сообщений: 481
20.02.2015, 11:00  [ТС]     Передать String-путь в EditText AlertDialog'a ? #19
Поэтому я и спрашиваю - где происходит запуск других активностей...
В диалоге (в layout диалога указаны эти самые кнопки make, select, write, по кнопке select вызывается onkl2)

Добавлено через 1 час 42 минуты
Armagedo, обнаружил что путь передается таким же способом et.setText(FilePath) в текстовое поле основного активити, таким образом было решено упростить диалог до наличия трех кнопок (make, select, write), и автовыхода из него.

т.е. так и не понял почему не работает изначальный вариант а вось бы пригодилось, но СПАСИБО ЗА БОЙ!


З.Ы. хотелось бы узнать ПОЧЕМУ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2015, 11:29     Передать String-путь в EditText AlertDialog'a ?
Еще ссылки по теме:

Считать с editText русские символы (киррилицу) в string Android
Android Передать номер из EditText в условие
Android Передать String в AsyncTask, получить callback
Android Spinner в AlertDialog
Android AlertDialog и RadioGroup

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
20.02.2015, 11:29     Передать String-путь в EditText AlertDialog'a ? #20
Цитата Сообщение от disx Посмотреть сообщение
З.Ы. хотелось бы узнать ПОЧЕМУ?
Та хз

Правда, меня настораживает еще один момент.
Почему при создании диалога этот диалог там же и убивается?

Java
1
2
3
4
5
6
7
8
9
10
protected Dialog onCreateDialog(int id) {
 
            switch (id) {
            case DIALOG_EXIT:
...
                builder.setCancelable(true);
                removeDialog(id);
                return builder.create();
...  
        }
Тока голова появилась, а её рррраз и шашкой.
На всякий случай?

P.S. Так, а шо там за ошибку выдаёт?
Ты нам раскроешь секрет?
ГДЕ эта ошибка возникает, в каком методе - мы уже поняли.
Хотелось бы увидеть, что это за ошибка.
Yandex
Объявления
20.02.2015, 11:29     Передать String-путь в EditText AlertDialog'a ?
Ответ Создать тему
Опции темы

Текущее время: 22:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru