Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 565
Записей в блоге: 1
#1

Непонятка с ViewPager один и тот же id на разных страницах? - Программирование Android

16.10.2015, 09:32. Просмотров 311. Ответов 6
Метки нет (Все метки)

есть ViewPager, на его страницах списки, всего 4 страницы, долгим кликом на item списка вызываю контекстное меню, далее выбор "изменить", появляется диалог и тостом всплывает номер текущей страницы VP.

так вот 1,2,3-я страницы показывает тост соответствующий 1,2,3, а на четвертой всплывает "3" что это, куда смотреть?

Добавлено через 17 часов 30 минут
подскажите пожалуйста
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2015, 09:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Непонятка с ViewPager один и тот же id на разных страницах? (Программирование Android):

Один и тот же шрифт в разных браузерах - HTML, CSS
Заранее извиняюсь, т.к. скорее всего вопрос д.б. не в эту ветку, но она самая подходящая все же. Есть такая трабла: шрифт EuropeExt...

Один и тот же класс в разных dll - C#
Понадобилось написать прогу для работы с почтой. Решил использовать библиотеку MailSystem.NET. Скачал отсюда -...

Один и тот же код не работает в разных компиляторах - Fortran
Один и тот же код, но в FPS4 работает, а в интеле и компаке нет. В чем может быть проблема? program muy use mt integer(4) stat,obj...

Как использовать один и тот же объект в разных классах? - C++
Подскажите, пожалуйста, как получить доступ к функции через объект. Второй день бьюсь, хотя решение должно быть простое В классе A...

Почему один и тот же код не работает в разных файлах? - Java EE
Здравствуйте. Помогите, пожалуйста, решить проблему. Имеется файл index.jsp в папке user. За папкой обазначены все css и js. Я делаю...

Почему в разных браузерах один и тот же шрифт выглядит по разному? - HTML, CSS
Почему в разных браузерах один и тот же шрифт выглядит по разному? Спасибо.

6
zealot01
42 / 42 / 16
Регистрация: 24.08.2015
Сообщений: 136
Завершенные тесты: 1
16.10.2015, 10:29 #2
disx, Покажи код
0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 565
Записей в блоге: 1
16.10.2015, 10:46  [ТС] #3
zealot01,

MainActivity:
Кликните здесь для просмотра всего текста
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
package com.photocrib;
 
import java.util.ArrayList;
import java.util.List;
import com.photocrib.DB.DBHelper;
import com.photocrib.FirstFragment.MyCursorLoader;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.support.v4.widget.DrawerLayout;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends ActionBarActivity implements
        NavigationDrawerFragment.NavigationDrawerCallbacks {
 
    private NavigationDrawerFragment mNavigationDrawerFragment;
 
    private CharSequence mTitle;
 
    // _____________________________________________________________________________________________________
 
    public static final int FRAGMENTS = 3;
 
    static final String TAG = "myLogs";
    static final int PAGE_COUNT = 10;
    static int ip;
    private static final Context Context = null;
 
    public DB db;
    ViewPager pager;
    PagerAdapter pagerAdapter;
    private Cursor cursor;
    static String arg = null;
    static String count = null;
 
    // _____________________________________________________________________________________________________
    //---------------------splash-----------------------------
 
    //--------------------end splash--------------------------
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
//      db = new DB(this);
//      db.open();
//      MyCursorLoader cursorLoader = new MyCursorLoader(this, db);
//      cursor = cursorLoader.loadInBackground();
        // cursor = db.getAllData(arg);
        // count = String.valueOf(cursor.getCount());
        // Toast tost = Toast.makeText(getApplicationContext(),
        // count, Toast.LENGTH_SHORT);
        // tost.setGravity(50, 200, 30);
        // tost.show();
 
 
        mNavigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager()
                .findFragmentById(R.id.navigation_drawer);
        mTitle = getTitle();
 
        // Set up the drawer.
        mNavigationDrawerFragment.setUp(R.id.navigation_drawer,
                (DrawerLayout) findViewById(R.id.drawer_layout));
 
        pager = (ViewPager) findViewById(R.id.pager);
        pagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
        pager.setAdapter(pagerAdapter);
 
    }
 
    // ---------------end onCreate------------
    @Override
    public void onNavigationDrawerItemSelected(int position) {
        // update the main content by replacing fragments
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager
                .beginTransaction()
                .replace(R.id.container,
                        PlaceholderFragment.newInstance(position + 1)).commit();
    }
 
    // ----------Action of String------
    public void onSectionAttached(int number) {
        switch (number) {
        case 0:
 
            mTitle = getString(R.string.app_name);
            break;
        case 1:
            //mTitle = getString(R.string.title_section1);
            mTitle = getString(R.string.app_name);
            break;
        case 2:
            mTitle = getString(R.string.title_section2);
//          Intent intent = new Intent(this, AddActivity.class);
//          startActivity(intent);
            break;
        case 3:
            mTitle = getString(R.string.title_section3);
            finish();
            
            break;
        case 4:
            
            break;
        }
    }
 
    // ---------------ActionBar------------------------
    public void restoreActionBar() {
        ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
        actionBar.setDisplayShowTitleEnabled(true);
        actionBar.setTitle(mTitle);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        if (!mNavigationDrawerFragment.isDrawerOpen()) {
 
            getMenuInflater().inflate(R.menu.main, menu);
            restoreActionBar();
            return true;
        }
        return super.onCreateOptionsMenu(menu);
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
 
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
 
    // ---------END------ActionBar------------------------
    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {
        /**
         * The fragment argument representing the section number for this
         * fragment.
         */
        private static final String ARG_SECTION_NUMBER = "section_number";
 
        /**
         * Returns a new instance of this fragment for the given section number.
         */
        public static PlaceholderFragment newInstance(int sectionNumber) {
            PlaceholderFragment fragment = new PlaceholderFragment();
            Bundle args = new Bundle();
            args.putInt(ARG_SECTION_NUMBER, sectionNumber);
            fragment.setArguments(args);
            return fragment;
        }
 
        public PlaceholderFragment() {
        }
 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container,
                    false);
            return rootView;
        }
 
        @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);
            ((MainActivity) activity).onSectionAttached(getArguments().getInt(
                    ARG_SECTION_NUMBER));
        }
    }
 
    // --------------end NavDr and ActionBar------------
    private class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
        List<Fragment> mFragments;
 
        public MyFragmentPagerAdapter(FragmentManager fm) {
            super(fm);
            mFragments = new ArrayList<Fragment>();
            mFragments.add(new FirstFragment());
            mFragments.add(new SecondFragment());
            mFragments.add(new TherdFragment());
            mFragments.add(new FourthFragment());
            
        }
 
        @Override
        public Fragment getItem(int position) {
            return mFragments.get(position);
 
            // return PageFragment.newInstance(position);
        }
 
        @Override
        public int getCount() {
            return mFragments.size();
            // return FRAGMENTS;
            // return PAGE_COUNT;
        }
 
        // v2
        @Override
        public CharSequence getPageTitle(int position) {
            int  id=position;
            ip=id;
            String [] predm = AddActivity.Predmet;
            String titl = predm[id];
            return titl;
        }
//      @Override
//      public CharSequence getPageTitle(int position) {
//          return "Title " + position;
//      }
 
    }
    // --------------END----MyFragmentPagerAdapter----------
    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        // super.onBackPressed();
        openQuitDialog();
    }
 
    private void openQuitDialog() {
        AlertDialog.Builder quitDialog = new AlertDialog.Builder(
                MainActivity.this);
        quitDialog.setTitle("Выйти из программы, Вы уверены?");
 
        quitDialog.setPositiveButton("Да", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                finish();
            }
        });
 
        quitDialog.setNegativeButton("Нет", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
            }
        });
 
        quitDialog.show();
    }
}
0
zealot01
42 / 42 / 16
Регистрация: 24.08.2015
Сообщений: 136
Завершенные тесты: 1
16.10.2015, 12:09 #4
disx, А Toast откуда вызывается? Чёт не видно. Может из FourthFragment и номер жёстко задан.
0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 565
Записей в блоге: 1
16.10.2015, 12:30  [ТС] #5
zealot01,
А Toast откуда вызывается?
из диалога
Кликните здесь для просмотра всего текста
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
package com.photocrib;
 
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
 
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;
 
// ...
  public class Dialog_Edit extends DialogFragment implements View.OnClickListener{
      private Button btSave, btCancel;
      private EditText textPath;
      private int id_col;
      DB db;
      Cursor cursor;
    private String name;
    static int [] arg = {0, 0, 0, 0};
String str, id;
      public Dialog_Edit() {
          // Empty constructor required for DialogFragment
      }
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
              Bundle savedInstanceState) {
 
          id = String.valueOf(MainActivity.ip);
 
 
          Toast toast = Toast.makeText(
                        getActivity(), id,
                        Toast.LENGTH_SHORT);               //////////////////////////////////////TOAST ТУТ
                toast.show();
          id = null;
 
 
          View view = inflater.inflate(R.layout.dialog, container);
          
          textPath = (EditText) view.findViewById(R.id.textPath);
          btSave = (Button) view.findViewById(R.id.button1);
          btCancel = (Button) view.findViewById(R.id.button2);
 
 
          if (FirstFragment.textmsg != "      "){
              arg[0]=1;
          }
          if (SecondFragment.textmsg != "      "){
              arg[1]=2;
          }
          if (TherdFragment.textmsg != "      "){
              arg[2]=3;
          }
          if (FourthFragment.textmsg != "      "){
              arg[3]=4;
          }
 
 
 
          if (arg[0]==1){
             str = FirstFragment.textmsg;
              textPath.setText(str);
 
          }
          if (arg[1]==2) {
              str = SecondFragment.textmsg;
              textPath.setText(str);
 
          }
          if (arg[2]==3) {
              str = TherdFragment.textmsg;
              textPath.setText(str);
 
          }
          if (arg[3]==4) {
              str = FourthFragment.textmsg;
              textPath.setText(str);
 
          }
 
 
//          if (arg[4]==5) {
//              String str5 = "end";
//              textPath.setText(str5);
//          }
 
          btSave.setOnClickListener(this);
          btCancel.setOnClickListener(this);
          getDialog().setTitle("Изменить запись");
 
 
          return view;
      }
 
 
    public void onClick(View v) {
        // TODO Auto-generated method stub
 
        switch (v.getId()) {
            case R.id.button1:
                db = new DB(getActivity());
                db.open();
 
 
                    str = textPath.getText().toString();
                    id_col=FirstFragment.id_col;
                    db.updRec(id_col, str);
                   // FirstFragment.scAdapter.notifyDataSetChanged();
 
 
 
                    str = textPath.getText().toString();
                    id_col = SecondFragment.id_col;
                   // String st = String.valueOf(id_col);
                    db.updRec2(id_col, str);
                  //  SecondFragment.scAdapter2.notifyDataSetChanged();
//                Toast toast = Toast.makeText(
//                        getActivity(), st,
//                        Toast.LENGTH_SHORT);
//                toast.show();
 
 
 
                    str = textPath.getText().toString();
                    id_col = TherdFragment.id_col;
                    db.updRec3(id_col, str);
                   // TherdFragment.scAdapter3.notifyDataSetChanged();
 
 
             //   if (arg[3]!=0) {
 
                str = textPath.getText().toString();
                id_col = FourthFragment.id_col;
                db.updRec4(id_col, str);
                textPath.setText("      ");
 
                    //FourthFragment.scAdapter4.notifyDataSetChanged();
 
               // }
 
 
                if (arg[0]!=0){
 
 
                    FirstFragment.scAdapter.notifyDataSetChanged();
 
                }
                if (arg[1]!=0) {
 
 
                    SecondFragment.scAdapter2.notifyDataSetChanged();
 
                }
                if (arg[2]!=0) {
 
                    TherdFragment.scAdapter3.notifyDataSetChanged();
 
                }
                if (arg[2]!=0) {
 
                    FourthFragment.scAdapter4.notifyDataSetChanged();
 
                }
 
                str = null;
                db.close();
                onDismiss(getDialog());
 
                break;
            case R.id.button2:
 
                onDismiss(getDialog());
                break;
        }
 
    }
  }
0
zealot01
42 / 42 / 16
Регистрация: 24.08.2015
Сообщений: 136
Завершенные тесты: 1
16.10.2015, 17:55 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
disx, ViewPager дергает фрагменты из адаптера как ему самому вздумается, может по две страницы прочитать за показ http://startandroid.ru/ru/uroki/vse-...viewpager.html. Номер страницы текущей в getPageTitle может быть неправильный. Вешай на pager OnPageChangeListener
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
pager.setAdapter(pagerAdapter);
pager.setOnPageChangeListener(new OnPageChangeListener() {
 
      @Override
      public void onPageSelected(int position) {
        int  id=position;
        MainActivity.ip=id;
      }
 
      @Override
      public void onPageScrolled(int position, float positionOffset,
          int positionOffsetPixels) {
      }
 
      @Override
      public void onPageScrollStateChanged(int state) {
      }
    });
Добавлено через 20 минут
Не забудь начальную страницу задать static int ip=0;
1
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 565
Записей в блоге: 1
24.10.2015, 10:28  [ТС] #7
zealot01, все по полкам разложил
0
24.10.2015, 10:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2015, 10:28
Привет! Вот еще темы с ответами:

Вычислить разницу в цене на один и тот же товар но в 2 разных месяца - MS Access
Подскажите, пожалуйста, как сделать запрос к базе. Необходимо вычислить разницу в цене на один и тот же товар но в 2 разных месяца. Не могу...

Можно ли в разных lock() одновременно использовать один и тот же объект синхронизации - C#
Можно ли в разных lock() одновременно использовать один и тот же объект синхронизации для доступа к разным ресурсам?

При наборе двух разных доменных имён, попадаю на один и тот же - Домены
Всем привет. Вопрос такой : На одном моём хостинге несколько доменов. Проблема в том, что если набрать любое из трёх доменное имя, выйдет...

Философия. Можете привести примеры разных классов, в которых реализуется один и тот же интерфейс? - ООП и паттерны
Причём классам должны соответствовать объекты или явления из как можно более далёких областей знания - экономики, биологии, социологии. ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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