|  5.11.2015 / 09:33 |  | 
| Dont    Пользователь 
  Сейчас: Offline 
 Регистрация: 09.09.2012
 | Может кто подскажет как во фрагменте нормально реализовать кнопку "назад"  package com.mycompany.mylistfragment; import android.app.*;import android.os.*;import android.view.*; public class MainActivity extends Activity implements SimpleListFragment.OnArticleSelectedListener{     @Override    public void onArticleSelected(String articleStr)    {        selectItem(articleStr);    }     @Override    protected void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        if (savedInstanceState == null)        {            selectItem("/sdcard");        }    }    private void selectItem(String str)    {        str = str != null ? str : "/";        SimpleListFragment fragment = SimpleListFragment.newInstance(str);        getFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.container, fragment).commit();    }     @Override    public boolean onCreateOptionsMenu(Menu menu)    {        menu.add(0, 1, 0, "Root");        menu.add(0, 2, 0, "SD card");        menu.add(1, 3, 0, "Exit");        return super.onCreateOptionsMenu(menu);    }     @Override    public boolean onOptionsItemSelected(MenuItem item)    {        switch (item.getItemId())        {            case 1:                selectItem("/");                break;            case 2:                selectItem("/sdcard");                break;            case 3:                finish();        }        return super.onOptionsItemSelected(item);    }
 Нужно как-то сделать возврат в папки на уровень выше кнопкой назад, чтоб при этом обновлялось содержимое списка, на случай изменений. Тестовое приложение чтоб понятнее было о чем речь прикрепленоИзменено Dont (5.11 / 09:35) (всего 1 раз)
 
 Прикрепленные файлы:  MyListFragment_(…).apk  (26.5 кб.) Скачано 319 раз  | 
|  5.11.2015 / 10:33 |  | 
| aNNiMON   Супервизор 
  Сейчас: Offline 
 Имя: ВитёкРегистрация: 11.01.2010
 
 | Dont,  я так понимаю, на каждый переход в папку создаётся новый фрагмент? Если так, то это не экономно.  Можно во фрагменте всё сделать - переопределить omBackPressed и пока мы не находимся в корне переходить на уровень выше. Как только дошли до корневой папки и нажали Назад - закрываем фрагмент.__________________
 
   let live | 
|  5.11.2015 / 13:52 |  | 
| Dont    Пользователь 
  Сейчас: Offline 
 Регистрация: 09.09.2012
 | aNNiMON,  Это описано в документации и называется "Создание обратного вызова события для операции"   http://developer.android.com/i...nicatingWithActivity Вот как сейчас реализовано в самом ListFragment   public static SimpleListFragment newInstance(String str)    {        SimpleListFragment fragment = new SimpleListFragment();        Bundle bundle = new Bundle();        bundle.putString("lastpath", str);        fragment.setArguments(bundle);        return fragment;    }
 А как реализовать onBackPressed()? | 
|  5.11.2015 / 16:05 |  | 
| aNNiMON   Супервизор 
  Сейчас: Offline 
 Имя: ВитёкРегистрация: 11.01.2010
 
 | __________________Dont, вот типа такого можно .
   let live | 
|  5.11.2015 / 16:16 |  | 
| Dont    Пользователь 
  Сейчас: Offline 
 Регистрация: 09.09.2012
 | aNNiMON,  В ListFragment не понятно как реализовать
 | 
|  5.11.2015 / 16:26 |  | 
| aNNiMON   Супервизор 
  Сейчас: Offline 
 Имя: ВитёкРегистрация: 11.01.2010
 
 | Dont,  сделай обычный Fragment и помести в него ListView. Так гибче будет.__________________
 
   let live | 
|  5.11.2015 / 16:31 |  | 
| Dont    Пользователь 
  Сейчас: Offline 
 Регистрация: 09.09.2012
 | Так вроде ListFragment как раз для списков сделали. Сейчас вот как  Открыть спойлер Закрыть спойлер  package com.mycompany.mylistfragment;import android.app.*;import android.view.*;import android.os.*;import android.widget.*;import java.io.*;import java.util.*;import java.text.*;import android.content.*;import android.net.*; public class SimpleListFragment extends ListFragment{    public static SimpleListFragment newInstance(String str)    {        SimpleListFragment fragment = new SimpleListFragment();        Bundle bundle = new Bundle();        bundle.putString("lastpath", str);        fragment.setArguments(bundle);        return fragment;    }     String CURRENT_PATH;    private View rootView;    private TextView tvPath;    File[] files;    List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();    private static final String[] from = {"icon", "name", "modify"};    private static final int[] to = {R.id.file_icon, R.id.file_name, R.id.file_modify};    SimpleAdapter mAdapter;    String uri;    OnArticleSelectedListener mListener;     public interface OnArticleSelectedListener    {        public void onArticleSelected(String articleStr);    }     @Override    public void onAttach(Activity activity)    {        super.onAttach(activity);        try        {            mListener = (OnArticleSelectedListener) activity;        }        catch (ClassCastException e)        {            throw new ClassCastException(activity.toString() + "error");        }    }     @Override    public void onCreate(Bundle savedInstanceState)    {        CURRENT_PATH = getArguments().getString("lastpath", "/");        File f = new File(CURRENT_PATH);        files = f.listFiles();        Map<String, Object> map;        long size;        double fileSize;        java.text.DecimalFormat df = new java.text.DecimalFormat("#0.00");        String modTime;        String strSize;        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Arrays.sort(files);        super.onCreate(savedInstanceState);        for (int i = 0; i < files.length; i++)        {            modTime = dateFormat.format(new Date(new File(files[i].getAbsolutePath()).lastModified()));            map = new HashMap<String, Object>();            if (files[i].isFile())            {                size = files[i].length();                if (size >= 1073741824)                {                    fileSize = (double) size / 1073741824.0;                    strSize = df.format(fileSize) + "G";                }                else if (size >= 1048576)                {                    fileSize = (double) size / 1048576.0;                    strSize = df.format(fileSize) + "M";                }                else if (size >= 1024)                {                    fileSize = (double) size / 1024;                    strSize = df.format(fileSize) + "K";                }                else                {                    strSize = Long.toString(size) + "B";                }                modTime = strSize != null ? modTime + "   " + strSize : modTime;            }            map.put("name", files[i].getName());            map.put("icon", files[i].isFile() ? R.drawable.file : R.drawable.folder);            map.put("modify", modTime);            listItems.add(map);        }    }     @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)    {        rootView = inflater.inflate(R.layout.layout_fragment, container, false);        tvPath = (TextView) rootView.findViewById(R.id.tvpath);        tvPath.setText(CURRENT_PATH);        return rootView;    }     @Override    public void onActivityCreated(Bundle savedInstanceState)    {        mAdapter = new SimpleAdapter(getActivity(), listItems, R.layout.item_list, from, to);        super.onActivityCreated(savedInstanceState);        setListAdapter(mAdapter);    }     @Override    public void onListItemClick(ListView l, View v, int position, long id)    {        uri = files[position].getPath();        if (files[position].isFile())        {            startActivity(new Intent(Intent.ACTION_VIEW).setDataAndType(Uri.fromFile(new File(uri)), "*/*"));        }        else if (files[position].isDirectory() && files[position].listFiles() != null)        {            mListener.onArticleSelected(uri);        }        else        {            Toast.makeText(getActivity(), "No permission", Toast.LENGTH_LONG).show();        }        super.onListItemClick(l, v, position, id);    } }
Изменено Magatino (5.11 / 16:44) (всего 1 раз)
 | 
|  20.11.2015 / 20:20 |  | 
| mcdevil    Пользователь 
  Сейчас: Offline 
 Имя: nullРегистрация: 17.10.2015
 
 | Дайте пожалуйста ссылку на android ide для Android, желательно прямую, пробовал скачать 4pda даже зарегистрировался, но ничего не выходит, 404 not found
 | 
|  20.11.2015 / 20:23 |  | 
| defaultday    Пользователь 
  Сейчас: Offline 
 Откуда: АлапаевскРегистрация: 12.03.2014
 
 | mcdevil,  на spaces.ru в поиск напиши AIDE там есть крякнутая
 | 
|  20.11.2015 / 20:29 |  | 
| mcdevil    Пользователь 
  Сейчас: Offline 
 Имя: nullРегистрация: 17.10.2015
 
 | defaultday,  Я не могу войти на spaces, не получается через комп.
 |