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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 46, средняя оценка - 5.00
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
#1

Fragment вместо Activity - Android

12.05.2013, 02:59. Просмотров 5745. Ответов 61
Метки нет (Все метки)

Использую фрагмент вместо Activity. Но теперь методы не запускаются с фрагментов. Как можно полностью реализовать во фрагменте всё то, что было реализованно с помощью обычного Activity.
Вид метода:
Javascript
1
2
3
4
5
6
public void logOut() {
        antFPr.access_token = null;
        antFPr.expires = 0;
        antFPr.save(Preferens.this);
        System.out.println("LogOut");
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.05.2013, 03:09     Fragment вместо Activity #2
какие методы?
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
12.05.2013, 03:29  [ТС]     Fragment вместо Activity #3
обычные методы. Я просто понять не могу как работать с фрагментами.
У меня была активность там я вызывал методы из других классов, теперь я использую вместо активности fragmet. Но там я немогу запускать методы т.к там такая вещь public class MenuFragment extends ListFragment {. Как же мне нажав на кнопку во фрагменте запустить метод?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.05.2013, 03:46     Fragment вместо Activity #4
все точно также, не вижу проблемы.
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
12.05.2013, 03:52  [ТС]     Fragment вместо Activity #5
Вот у меня была Activity:

Javascript
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
public class Prefs extends Activity {
 
    private static final String LOG_TAG = null;
 
    Account account = new Account();
 
    MainLoginActivity mainLog = new MainLoginActivity();
 
    AccountFacebookPrefs accountFPrefs = new AccountFacebookPrefs();
    
    AccountFacebook accountFacebook = new AccountFacebook();
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.settings);
 
        Button buttonOut = (Button) findViewById(R.id.buttonSetOutVK);
 
        buttonOut.setOnClickListener(new OnClickListener() {
 
            @Override
            public void onClick(View v) {
 
                logOutVK();
                logOutFB();
                logOutFB2();
                logOutDataBase();
                startActivity(new Intent(Prefs.this,
                        MainLoginActivity.class));
                finish(); 
 
            }
        });
 
    }
 
    public void logOutFB() {
        accountFPrefs.access_token = null;
        accountFPrefs.expires = 0;
        accountFPrefs.save(Prefs.this);
        System.out.println("LogOut Facebook");
    }
    
    public void logOutFB2() {
        accountFacebook.id = null;
        accountFacebook.first_name = null;
        accountFacebook.picture = null;
        accountFacebook.save(Prefs.this);
        System.out.println("LogOut Facebook");
    }
    
    
 
    public void logOutVK() {
 
        // mainLog.api=null;
        account.access_token = null;
        account.user_id = 0;
        account.save(Prefs.this);
 
        System.out.println("QQQQQ access_token " + account.access_token);
        System.out.println("QQQQQ user_id " + account.user_id);
 
    }
 
    public void logOutDataBase() {
 
        DBHelper dbHelper = new DBHelper(this);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
 
        Log.d(LOG_TAG, "--- Clear mytable: ---");
        int clearCount = db.delete("mytable", null, null);
        Log.d(LOG_TAG, "deleted rows count = " + clearCount);
        dbHelper.close();
    }
 
}
а теперь:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class MenuFragment extends ListFragment {
        
public View onCreateView(LayoutInflater inflater, ViewGroup container,
              Bundle savedInstanceState) {
            View v = inflater.inflate(R.layout.fragment, null);
            
            Button button = (Button) v.findViewById(R.id.Button02_DATAK);
            button.setOnClickListener(new OnClickListener() {
              public void onClick(View v) {
                  
            
                        
                
              }
            });
            
            return v;
          }
}
но написать код я не могу сюда как в Activity. Как мне использовать Fragmets???
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.05.2013, 03:56     Fragment вместо Activity #6
не понимаю в чем конкретно проблема...
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
12.05.2013, 04:05  [ТС]     Fragment вместо Activity #7
Как мне все эти методы

Javascript
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
public void logOutFB() {
        accountFPrefs.access_token = null;
        accountFPrefs.expires = 0;
        accountFPrefs.save(Prefs.this);
        System.out.println("LogOut Facebook");
    }
    
    public void logOutFB2() {
        accountFacebook.id = null;
        accountFacebook.first_name = null;
        accountFacebook.picture = null;
        accountFacebook.save(Prefs.this);
        System.out.println("LogOut Facebook");
    }
    
    
 
    public void logOutVK() {
 
        // mainLog.api=null;
        account.access_token = null;
        account.user_id = 0;
        account.save(Prefs.this);
 
        System.out.println("QQQQQ access_token " + account.access_token);
        System.out.println("QQQQQ user_id " + account.user_id);
 
    }
 
    public void logOutDataBase() {
 
        DBHelper dbHelper = new DBHelper(this);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
 
        Log.d(LOG_TAG, "--- Clear mytable: ---");
        int clearCount = db.delete("mytable", null, null);
        Log.d(LOG_TAG, "deleted rows count = " + clearCount);
        dbHelper.close();
    }
запустить в классе Fragmets?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.05.2013, 04:08     Fragment вместо Activity #8
точно также как в активити.

Добавлено через 30 секунд
формулируйте проблему точнее.
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
12.05.2013, 04:20  [ТС]     Fragment вместо Activity #9
Вот что получается:

http://jpg.by/?dm=GNPG

http://jpg.by/?di=GNPG
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.05.2013, 04:27     Fragment вместо Activity #10
у меня картинки не загружаются.
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
12.05.2013, 04:30  [ТС]     Fragment вместо Activity #11
Цитата Сообщение от Stylish2013 Посмотреть сообщение
accountFPrefs.save(Prefs.this);
Цитата Сообщение от Stylish2013 Посмотреть сообщение
accountFacebook.save(Prefs.this);
Цитата Сообщение от Stylish2013 Посмотреть сообщение
account.save(Prefs.this);
в этих строчках кода ошибки (No enclosing instance of the type Prefs is accessible in scope)? подчёркивает Prefs.this
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.05.2013, 04:43     Fragment вместо Activity #12
Замените Prefs.this на getActivity() и поучите основы Java.
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
12.05.2013, 04:47  [ТС]     Fragment вместо Activity #13
спасибо, а как быть с
Javascript
1
DBHelper dbHelper = new DBHelper(this);
подчёркивает DBHelper, ошибка (DBHelper cannot be resolved to a type)
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.05.2013, 04:54     Fragment вместо Activity #14
Java
1
DBHelper dbHelper = new DBHelper(getActivity());
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
12.05.2013, 05:02  [ТС]     Fragment вместо Activity #15
Цитата Сообщение от V0v1k Посмотреть сообщение
DBHelper dbHelper = new DBHelper(getActivity());
все равно подчеркивает DBHelper и пишет DBHelper cannot be resolved to a type
c4sp3r
0x5B4C322291BD52AE
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
12.05.2013, 13:01     Fragment вместо Activity #16
Stylish2013, http://startandroid.ru/ru/uroki/vse-...lifecycle.html
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.05.2013, 14:34     Fragment вместо Activity #17
Цитата Сообщение от Stylish2013 Посмотреть сообщение
все равно подчеркивает DBHelper и пишет DBHelper cannot be resolved to a type
покажите код класса DBHelper.
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
12.05.2013, 15:00  [ТС]     Fragment вместо Activity #18
Цитата Сообщение от V0v1k Посмотреть сообщение
покажите код класса DBHelper.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class DBHelper extends SQLiteOpenHelper {
 
        public DBHelper(Context context) {
            // конструктор суперкласса
            super(context, "myDB", null, 1);
        }
 
        @Override
        public void onCreate(SQLiteDatabase db) {
            Log.d(LOG_TAG, "--- onCreate database ---");
            // создаем таблицу с полями
            db.execSQL("create table mytable ("
                    + "id integer primary key autoincrement," + "name text"
                    + ");");
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
        }
    }
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.05.2013, 15:11     Fragment вместо Activity #19
должно работать, сделайте скриншот ошибки.

Добавлено через 48 секунд
импорт класса DBHelper есть?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2013, 15:21     Fragment вместо Activity
Еще ссылки по теме:

Android Взаимодействие Fragment-ов через Activity (interface)
Передача параметров с Activity в Fragment Android
Переход из Fragment в Activity Android
Использование Fragment в Activity Android
Android Fragment, Splash-activity, Jsoup onPostExecute

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

Или воспользуйтесь поиском по форуму:
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
12.05.2013, 15:21  [ТС]     Fragment вместо Activity #20
Импорт всё есть. У меня класс DBHelper находился в другом классе и пакете и так он его не видит, а когда я копирую класс внутрь моего класса Fragment, то тогда DBHelper ошибки нет.

Это правильно если класс DBHelper должен быть внутри этого класса?
Yandex
Объявления
12.05.2013, 15:21     Fragment вместо Activity
Ответ Создать тему
Опции темы

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