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

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

Войти
Регистрация
Восстановить пароль
 
 
ArmenT
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 44
#1

Crash Activity при присвоении ItemList-у Adapter-a - Программирование Android

26.09.2016, 14:08. Просмотров 575. Ответов 35
Метки нет (Все метки)

Activity

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
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
 
public class RestoreActivity extends AppCompatActivity implements View.OnClickListener {
 
 
    ImageButton btnOKRestore;
    ImageButton btnExitRestore;
    Button btnOpenFile;
    TextView xPath;
    TextView xFile;
    String xFileName;
    String xInventname;
    String a;
    String str;
    String aPath;
    ArrayAdapter<String> xAdapter;
    ListView lvData;
    String[] list;
    ArrayList<String> arrayList;
    Integer i = 1;
    Integer j = 0;
    Integer k = 0;
    long xUserCode;
    long xInventMCode;
    private static final int SIZE=6;
 
    dbclass dbHelper = new dbclass(this);
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_restore);
 
        btnOpenFile = (Button) findViewById(R.id.btnOpenFile);
        btnOKRestore = (ImageButton) findViewById(R.id.btnOKRestore);
        btnExitRestore = (ImageButton) findViewById(R.id.btnExitRestore);
        xPath = (TextView) findViewById(R.id.ePath);
        xFile = (TextView) findViewById(R.id.eFile);
        lvData = (ListView) findViewById(R.id.lvData);
 
        xUserCode = (getIntent().getLongExtra("UserCode", 0));
 
        btnOpenFile.setOnClickListener(this);
        btnOKRestore.setOnClickListener(this);
        btnExitRestore.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View v) {
 
        switch (v.getId()) {
            case R.id.btnOpenFile:
                ClicOpenFile();
                break;
 
            case R.id.btnOKRestore:
                ClicbtnOKRestore();
                break;
 
            case R.id.btnExitRestore:
                ClickbtnExitRestore();
                break;
        }
    }
 
    private void ClickbtnExitRestore() {
        finish();
    }
 
    private void ClicbtnOKRestore() {
 
    }
 
    private void ClicOpenFile() {
        Intent intent = new Intent(this, FileManager.class);
        startActivityForResult(intent, 1);
    }
 
    // Метод для открытия файлаa
    private void readFile(String aFileName) {
        FileInputStream is = null;
        InputStreamReader in = null;
        BufferedReader br = null;
        a = "";
        arrayList = new ArrayList<String>();
        try {
            File f = new File(aFileName);
            is = new FileInputStream(f);
            in = new InputStreamReader(is, "UTF-8");
            br = new BufferedReader(in);
            while ((str = br.readLine()) != null) {
                // Заполнение Array
                a = a + '"' + i + "," + str + '"' + "! ";
                list = new String[]{a};
                i = i + 1;
            }
 
            arrayList = DataAnalise(a);
 
            xAdapter = new ArrayAdapter<String>(this, R.layout.list_item_for_import, arrayList);
            lvData.setAdapter(xAdapter);
        } catch (Exception e) {
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                }
            }
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                }
            }
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                }
            }
        }
    }
 
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (data == null) {
            return;
        }
        aPath = data.getStringExtra("url");
        j= aPath.lastIndexOf("/") + 1;
        k= aPath.length();
        xPath.setText(aPath.substring(0, j));
        xFileName = aPath.substring(j,k);
        xFile.setText(xFileName);
        xFileName = xFile.getText().toString();
        j= xFileName.lastIndexOf(".");
        k= xFileName.length() - 4;
        xInventname = (xFileName.substring(0, j));
        xInventMCode = getInventMCode(xInventname);
        if (xInventMCode == 0)
            readFile(aPath);
    }
 
    private long getInventMCode(String vInventNum) {
        long xResult;
        xResult = dbHelper.getInventMCode(vInventNum);
        return xResult;
    }
 
    public ArrayList DataAnalise(String xImportData) {
        String[] arrObj = xImportData.split("!");
        ArrayList<ImportData> aList = new ArrayList<>();
 
        for (int i = 0; i < arrObj.length; i++) {
            String[] tempObj = arrObj[i].split(",");
            if (tempObj.length == SIZE)
                aList.add(new ImportData(tempObj[0], tempObj[1], tempObj[2], tempObj[3], tempObj[4], tempObj[5]));
        }
        return aList;
    }
 
 
}
Класс для импорта данных

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
public class ImportData {
 
    private Integer xRecNum;
    private String xInvoiceNum;
    private String xPostDesc;
    private String xInvoiceFullNum;
    private Integer xParcelQw;
    private String xZonaDesc;
 
    public ImportData(Integer xRecNum, String xInvoiceNum, String xPostDesc, String xInvoiceFullNum, Integer xParcelQw, String xZonaDesc) {
        this.xRecNum = xRecNum;
        this.xInvoiceNum = xInvoiceNum;
        this.xPostDesc = xPostDesc;
        this.xInvoiceFullNum = xInvoiceFullNum;
        this.xParcelQw = xParcelQw;
        this.xZonaDesc = xZonaDesc;
    }
 
    public ImportData(String s, String xInvoiceNum, String xPostDesc, String xInvoiceFullNum, String s1, String xZonaDesc) {
    }
 
    public Integer getxRecNum() {
        return xRecNum;
    }
 
    public void setxRecNum(Integer xRecNum) {
        this.xRecNum = xRecNum;
    }
 
    public String getxInvoiceNum() {
        return xInvoiceNum;
    }
 
    public void setxInvoiceNum(String xInvoiceNum) {
        this.xInvoiceNum = xInvoiceNum;
    }
 
    public String getxPostDesc() {
        return xPostDesc;
    }
 
    public void setxPostDesc(String xPostDesc) {
        this.xPostDesc = xPostDesc;
    }
}
Леауты

XML
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@layout/rect"
    android:orientation="vertical"
    android:weightSum="1">
 
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:weightSum="1">
 
        <TextView
            android:id="@+id/ePath"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="/sdcard/inventfiles"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#010199"
            android:enabled="false"
            android:layout_weight="0.26"
            android:layout_margin="5dp" />
 
        <TextView
            android:id="@+id/eFile"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=""
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#010199"
            android:enabled="false"
            android:layout_weight="0.26"
            android:layout_margin="5dp" />
 
        <Button
            android:id="@+id/btnOpenFile"
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/a2" />
 
    </TableRow>
    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
 
        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
 
            <Button
                android:id="@+id/bIdnCode"
                android:layout_width="0dp"
                android:layout_height="70dp"
                android:layout_column="1"
                android:layout_gravity="center_vertical"
                android:layout_weight="0.1"
                android:text="@string/textIdnCode"
                android:textColor="#010199" />
 
            <Button
                android:id="@+id/bInvoiceNum"
                android:layout_width="0dp"
                android:layout_height="70dp"
                android:layout_column="2"
                android:layout_gravity="center_vertical"
                android:layout_weight="0.5"
                android:text="@string/colInvoiceNum"
                android:textColor="#010199" />
 
            <Button
                android:id="@+id/bPostDesc"
                android:layout_width="0dp"
                android:layout_height="70dp"
                android:layout_column="3"
                android:layout_gravity="center_vertical"
                android:layout_weight="0.2"
                android:text="@string/colInvoiceNum"
                android:textColor="#010199" />
 
            <Button
                android:id="@+id/bInvoiceFullNum"
                android:layout_width="0dp"
                android:layout_height="70dp"
                android:layout_column="4"
                android:layout_gravity="center_vertical"
                android:layout_weight="0.5"
                android:text="@string/colInvoiceNum"
                android:textColor="#010199" />
 
            <Button
                android:id="@+id/bParcelQw"
                android:layout_width="0dp"
                android:layout_height="70dp"
                android:layout_column="5"
                android:layout_gravity="center_vertical"
                android:layout_weight="0.2"
                android:text="@string/colParcelQw"
                android:textColor="#010199" />
 
            <Button
                android:id="@+id/bZonaName"
                android:layout_width="0dp"
                android:layout_height="70dp"
                android:layout_column="6"
                android:layout_gravity="center_vertical"
                android:layout_weight="0.2"
                android:text="@string/colZonaName"
                android:textColor="#010199" />
 
        </TableRow>
 
        <ListView
            android:id="@+id/lvData"
            android:layout_width="wrap_content"
            android:layout_height="637dp"
            android:choiceMode="multipleChoice" />
    </TableLayout>
 
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal">
 
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btnOKRestore"
            android:src="@drawable/org_current_add"
            android:contentDescription="@string/btnrestore" />
 
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btnExitRestore"
            android:focusableInTouchMode="false"
            android:src="@drawable/btn_close_door"
            android:contentDescription="@string/btnexit" />
 
    </TableRow>
</LinearLayout>

XML
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
 
    <TextView
        android:id="@+id/tRecNum"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.1"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#DCDCDC"
        android:gravity="center_vertical|right"/>
 
    <TextView
        android:id="@+id/tInvoiceNum"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#010199"
        android:gravity="center_vertical|center_horizontal" />
 
    <TextView
        android:id="@+id/tPostDesc"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.1"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#010199"
        android:gravity="center_vertical|center_horizontal" />
 
    <TextView
        android:id="@+id/tInvoiceFullNum"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#010199"
        android:gravity="center_vertical|center_horizontal" />
 
      <TextView
        android:id="@+id/tParcelQw"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.2"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#010199"
        android:gravity="center_vertical|center" />
 
    <TextView
        android:id="@+id/tZonaName"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.2"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#010199"
        android:textStyle="bold"
        android:gravity="center_vertical|center_horizontal" />
 
</LinearLayout>
когда доходит до строки
lvData.setAdapter(xAdapter);
происходит крушение!

очень прошу указать на мою ошибку

Добавлено через 4 минуты
даже при по шаговом прохождении ошибок не дает просто тупо крушится! импортер отрабатывает коректно! не могу понять что я делаю не так!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2016, 14:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Crash Activity при присвоении ItemList-у Adapter-a (Программирование Android):

NPE на присвоении адаптера листу, при скрещивании двух проектов - Программирование Android
Скрещивал два проекта (ActionBar Tabs и CustomizeListView). Вообщем Табы и на них лист. Все было хорошо, но при запуске выдает NPE при...

Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity - Программирование Android
У меня в параллельном потоке происходит куча apply() Решение использовать apply вместо commit было принято из-за скорости. Но...

Изменение layout-элементов одного activity из другого activity - Программирование Android
Здравствуйте! Я хочу изменить размер или цвет текста TextView в одном activity из второго activity, каким образом мне можно это...

Android - Передача данных с одного Activity на другое Activity - Программирование Android
Здравствуйте , возникла необходимость получения числовых (int и float ну или double) данных в одном Activity , а обработка и вывод...

Из одной Activity запустить функцию другой Activity - Программирование Android
например есть Activity2 которое я показываю в Dialog окошке, там у меня находятся Date and Time Picker ы (Дата - начало, Дата - окончание)...

Из одного Activity получить значение другого Activity - Программирование Android
Запускаю активити: public class MainActivity extends Activity { ... ... Intent intent = new Intent(getBaseContext(),...

35
Pablito
2499 / 1983 / 618
Регистрация: 12.05.2014
Сообщений: 6,925
Завершенные тесты: 1
26.09.2016, 14:11 #2
Цитата Сообщение от ArmenT Посмотреть сообщение
просто тупо крушится!
есть там ошибка - в логе все есть
0
ArmenT
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 44
26.09.2016, 14:52  [ТС] #3
вот что есть в логе

XML
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
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: ge.com2gami.facebook.whi, PID: 7196
                  java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
                      at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386)
                      at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
                      at android.widget.AbsListView.obtainView(AbsListView.java:2338)
                      at android.widget.ListView.makeAndAddView(ListView.java:1812)
                      at android.widget.ListView.fillDown(ListView.java:698)
                      at android.widget.ListView.fillFromTop(ListView.java:759)
                      at android.widget.ListView.layoutChildren(ListView.java:1645)
                      at android.widget.AbsListView.onLayout(AbsListView.java:2149)
                      at android.view.View.layout(View.java:15140)
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)
                      at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1888)
                      at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1742)
                      at android.widget.TableLayout.onLayout(TableLayout.java:448)
                      at android.view.View.layout(View.java:15140)
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)
                      at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1888)
                      at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1742)
                      at android.widget.LinearLayout.onLayout(LinearLayout.java:1651)
                      at android.view.View.layout(View.java:15140)
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)
                      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515)
                      at android.widget.FrameLayout.onLayout(FrameLayout.java:450)
                      at android.view.View.layout(View.java:15140)
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)
                      at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:433)
                      at android.view.View.layout(View.java:15140)
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)
                      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515)
                      at android.widget.FrameLayout.onLayout(FrameLayout.java:450)
                      at android.view.View.layout(View.java:15140)
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)
                      at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1888)
                      at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1742)
                      at android.widget.LinearLayout.onLayout(LinearLayout.java:1651)
                      at android.view.View.layout(View.java:15140)
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)
                      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515)
                      at android.widget.FrameLayout.onLayout(FrameLayout.java:450)
                      at android.view.View.layout(View.java:15140)
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)
                      at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2342)
                      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2048)
                      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1211)
                      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6282)
                      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:788)
                      at android.view.Choreographer.doCallbacks(Choreographer.java:591)
                      at android.view.Choreographer.doFrame(Choreographer.java:560)
                      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:774)
                      at android.os.Handler.handleCallback(Handler.java:808)
                      at android.os.Handler.dispatchMessage(Handler.java:103)
                      at android.os.Looper.loop(Looper.java:193)
                      at android.app.ActivityThread.main(ActivityThread.java:5312)
                      at java.lang.reflect.Method.invokeNative(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:515)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)
                      at dalvik.system.NativeStart.main(Native Method)
                   Caused by: java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView
                      at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:379)
                      at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)*
                      at android.widget.AbsListView.obtainView(AbsListView.java:2338)*
                      at android.widget.ListView.makeAndAddView(ListView.java:1812)*
                      at android.widget.ListView.fillDown(ListView.java:698)*
                      at android.widget.ListView.fillFromTop(ListView.java:759)*
                      at android.widget.ListView.layoutChildren(ListView.java:1645)*
                      at android.widget.AbsListView.onLayout(AbsListView.java:2149)*
                      at android.view.View.layout(View.java:15140)*
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)*
                      at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1888)*
                      at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1742)*
                      at android.widget.TableLayout.onLayout(TableLayout.java:448)*
                      at android.view.View.layout(View.java:15140)*
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)*
                      at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1888)*
                      at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1742)*
                      at android.widget.LinearLayout.onLayout(LinearLayout.java:1651)*
                      at android.view.View.layout(View.java:15140)*
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)*
                      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515)*
                      at android.widget.FrameLayout.onLayout(FrameLayout.java:450)*
                      at android.view.View.layout(View.java:15140)*
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)*
                      at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:433)*
                      at android.view.View.layout(View.java:15140)*
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)*
                      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515)*
                      at android.widget.FrameLayout.onLayout(FrameLayout.java:450)*
                      at android.view.View.layout(View.java:15140)*
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)*
                      at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1888)*
                      at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1742)*
                      at android.widget.LinearLayout.onLayout(LinearLayout.java:1651)*
                      at android.view.View.layout(View.java:15140)*
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)*
                      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515)*
                      at android.widget.FrameLayout.onLayout(FrameLayout.java:450)*
                      at android.view.View.layout(View.java:15140)*
                      at android.view.ViewGroup.layout(ViewGroup.java:4866)*
                      at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2342)*
                      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2048)*
                      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1211)*
                      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6282)*
                      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:788)*
                      at android.view.Choreographer.doCallbacks(Choreographer.java:591)*
                      at android.view.Choreographer.doFrame(Choreographer.java:560)*
                      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:774)*
                      at android.os.Handler.handleCallback(Handler.java:808)*
                      at android.os.Handler.dispatchMessage(Handler.java:103)*
                      at android.os.Looper.loop(Looper.java:193)*
                      at android.app.ActivityThread.main(ActivityThread.java:5312)*
                      at java.lang.reflect.Method.invokeNative(Native Method)*
                      at java.lang.reflect.Method.invoke(Method.java:515)*
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)*
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)*
                      at dalvik.system.NativeStart.main(Native Method)*
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
26.09.2016, 15:15 #4
Java
1
arrayList = DataAnalise(a);
В ArrayList<String> возвращается ArrayList<ImportData>, потом это суется в адаптер. Я бы на его месте тоже крашился.
0
Pablito
2499 / 1983 / 618
Регистрация: 12.05.2014
Сообщений: 6,925
Завершенные тесты: 1
26.09.2016, 15:16 #5
ArrayAdapter requires the resource ID to be a TextView
переводить?
0
ArmenT
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 44
26.09.2016, 17:05  [ТС] #6
как сделать правильно?
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
26.09.2016, 17:30 #7
Ага, сейчас отвечу и мне скажут, что у меня на все вопросы один ответ - писать кастомный адаптер.

Проблема в том, что Гугл или не в курсе существования Вашего класса ImportData, или просто забыл написать под него адаптер. Выхода два - либо писать письмо Гуглу и ждать адаптер от них, либо... Ну Вы поняли.
0
Pablito
2499 / 1983 / 618
Регистрация: 12.05.2014
Сообщений: 6,925
Завершенные тесты: 1
26.09.2016, 17:40 #8
Цитата Сообщение от ArmenT Посмотреть сообщение
как сделать правильно?
гуглить про RecyclerView вместо ListView
0
ArmenT
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 44
27.09.2016, 13:00  [ТС] #9
Я создал адаптер и откорректировал кой что в остольных классах но сне знаю как правильно присвоить значения адаптеру поскажите если кто знает на всякий случай выкладываю все 3 класса которые в этом принимают участие

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
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
 
public class RestoreActivity extends AppCompatActivity implements View.OnClickListener {
 
 
    ImageButton btnOKRestore;
    ImageButton btnExitRestore;
    Button btnOpenFile;
    TextView xPath;
    TextView xFile;
    String xFileName;
    String xInventname;
    String a;
    String str;
    String aPath;
    ListView lvData;
    String[] list;
    ArrayList<String> arrayList;
 
    Integer i = 1;
    Integer j = 0;
    Integer k = 0;
    long xUserCode;
    long xInventMCode;
    private static final int SIZE=6;
 
    dbclass dbHelper = new dbclass(this);
    ImportAdapter ImportAdapter;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_restore);
 
        btnOpenFile = (Button) findViewById(R.id.btnOpenFile);
        btnOKRestore = (ImageButton) findViewById(R.id.btnOKRestore);
        btnExitRestore = (ImageButton) findViewById(R.id.btnExitRestore);
        xPath = (TextView) findViewById(R.id.ePath);
        xFile = (TextView) findViewById(R.id.eFile);
        lvData = (ListView) findViewById(R.id.lvData);
 
        xUserCode = (getIntent().getLongExtra("UserCode", 0));
 
        btnOpenFile.setOnClickListener(this);
        btnOKRestore.setOnClickListener(this);
        btnExitRestore.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View v) {
 
        switch (v.getId()) {
            case R.id.btnOpenFile:
                ClicOpenFile();
                break;
 
            case R.id.btnOKRestore:
                ClicbtnOKRestore();
                break;
 
            case R.id.btnExitRestore:
                ClickbtnExitRestore();
                break;
        }
    }
 
    private void ClickbtnExitRestore() {
        finish();
    }
 
    private void ClicbtnOKRestore() {
 
    }
 
    private void ClicOpenFile() {
        Intent intent = new Intent(this, FileManager.class);
        startActivityForResult(intent, 1);
    }
 
    // Метод для открытия файлаa
    private void readFile(String aFileName) {
        FileInputStream is = null;
        InputStreamReader in = null;
        BufferedReader br = null;
        a = "";
        arrayList = new ArrayList<String>();
        try {
            File f = new File(aFileName);
            is = new FileInputStream(f);
            in = new InputStreamReader(is, "UTF-8");
            br = new BufferedReader(in);
            while ((str = br.readLine()) != null) {
                // Заполнение Array
                a = a + '"' + i + "," + str + '"' + "! ";
                list = new String[]{a};
                i = i + 1;
            }
 
       // ВОТ ТУТ ДОЛНО БЫТЬ ПРИСВОЕНИЕ СОБРАНОГО В ОДНУ СУПЕР СТРОКУ "а" посредством ImportData класса ImportAdapter-у
 
// Как это написать я не знаю
 
            lvData.setAdapter(ImportAdapter);
        } catch (Exception e) {
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                }
            }
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                }
            }
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                }
            }
        }
    }
 
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (data == null) {
            return;
        }
        aPath = data.getStringExtra("url");
        j= aPath.lastIndexOf("/") + 1;
        k= aPath.length();
        xPath.setText(aPath.substring(0, j));
        xFileName = aPath.substring(j,k);
        xFile.setText(xFileName);
        xFileName = xFile.getText().toString();
        j= xFileName.lastIndexOf(".");
        k= xFileName.length() - 4;
        xInventname = (xFileName.substring(0, j));
        xInventMCode = getInventMCode(xInventname);
        if (xInventMCode == 0)
            readFile(aPath);
    }
 
    private long getInventMCode(String vInventNum) {
        long xResult;
        xResult = dbHelper.getInventMCode(vInventNum);
        return xResult;
    }
 
    public ArrayList DataAnalise(String xImportData) {
        String[] arrObj = xImportData.split("!");
        ArrayList<ImportData> aList = new ArrayList<>();
 
        for (int i = 0; i < arrObj.length; i++) {
            String[] tempObj = arrObj[i].split(",");
            if (tempObj.length == SIZE)
                aList.add(new ImportData(tempObj[0], tempObj[1], tempObj[2], tempObj[3], tempObj[4], tempObj[5]));
        }
        return aList;
    }
 
 
}
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
public class ImportData {
 
    private Integer xRecNum;
    private String xInvoiceNum;
    private String xPostDesc;
    private String xInvoiceFullNum;
    private Integer xParcelQw;
    private String xZonaDesc;
 
    public ImportData(Integer xRecNum, String xInvoiceNum, String xPostDesc, String xInvoiceFullNum, Integer xParcelQw, String xZonaDesc) {
        this.xRecNum = xRecNum;
        this.xInvoiceNum = xInvoiceNum;
        this.xPostDesc = xPostDesc;
        this.xInvoiceFullNum = xInvoiceFullNum;
        this.xParcelQw = xParcelQw;
        this.xZonaDesc = xZonaDesc;
    }
 
    public Integer getxRecNum() {
        return xRecNum;
    }
 
    public void setxRecNum(Integer xRecNum) {
        this.xRecNum = xRecNum;
    }
 
    public String getxInvoiceNum() {
        return xInvoiceNum;
    }
 
    public void setxInvoiceNum(String xInvoiceNum) {
        this.xInvoiceNum = xInvoiceNum;
    }
 
    public String getxPostDesc() {
        return xInvoiceNum;
    }
 
    public void setxPostDesc(String xPostDesc) {
        this.xPostDesc = xPostDesc;
    }
 
    public String getxInvoiceFullNum() {
        return xInvoiceNum;
    }
 
    public void setxInvoiceFullNum(String xInvoiceFullNum) {
        this.xInvoiceFullNum = xInvoiceFullNum;
    }
 
    public Integer getxParcelQw() {
        return xParcelQw;
    }
 
    public void setxParcelQw(Integer xParcelQw) {
        this.xParcelQw = xParcelQw;
    }
 
    public String getxZonaDesc() {
        return xPostDesc;
    }
 
    public void setxZonaDesc(String xPostDesc) {
        this.xPostDesc = xPostDesc;
    }
}
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
import android.content.Context;
import android.database.DataSetObserver;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
 
import java.util.ArrayList;
 
 
 
public class ImportAdapter extends BaseAdapter {
    Context ctx;
    LayoutInflater lInflater;
    ArrayList<ImportData> objects;
 
    ImportAdapter(Context context, ArrayList<ImportData> products) {
        ctx = context;
        objects = products;
        lInflater = (LayoutInflater) ctx
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
 
    // кол-во элементов
    @Override
    public int getCount() {
        return objects.size();
    }
    // элемент по позиции
    @Override
    public Object getItem(int position) {
        return objects.get(position);
    }
 
    // id по позиции
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // используем созданные, но не используемые view
        View view = convertView;
        if (view == null) {
            view = lInflater.inflate(R.layout.list_item_for_import, parent, false);
        }
        ImportData p = getProduct(position);
        ((TextView) view.findViewById(R.id.tRecNum)).setText(p.getxRecNum());
        ((TextView) view.findViewById(R.id.tInvoiceNum)).setText(p.getxInvoiceNum());
        ((TextView) view.findViewById(R.id.tPostDesc)).setText(p.getxPostDesc());
        ((TextView) view.findViewById(R.id.tInvoiceFullNum)).setText(p.getxInvoiceFullNum());
        ((TextView) view.findViewById(R.id.tParcelQw)).setText(p.getxParcelQw());
        ((TextView) view.findViewById(R.id.tZonaDesc)).setText(p.getxZonaDesc());
        return view;
    }
 
    ImportData getProduct(int position) {
        return ((ImportData) getItem(position));
    }
 
 
 
}
Добавлено через 31 минуту
откоректировал RestorActivity ошибок не дает но крушится

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
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
 
public class RestoreActivity extends AppCompatActivity implements View.OnClickListener {
 
 
    ImageButton btnOKRestore;
    ImageButton btnExitRestore;
    Button btnOpenFile;
    TextView xPath;
    TextView xFile;
    String xFileName;
    String xInventname;
    String a;
    String str;
    String aPath;
    ListView lvData;
    String[] list;
    ArrayList<String> arrayList;
 
    Integer i = 1;
    Integer j = 0;
    Integer k = 0;
    long xUserCode;
    long xInventMCode;
    private static final int SIZE=6;
 
    dbclass dbHelper = new dbclass(this);
    ImportAdapter ImportAdapter;
    ArrayList<ImportData> iData = new ArrayList<ImportData>();
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_restore);
 
        btnOpenFile = (Button) findViewById(R.id.btnOpenFile);
        btnOKRestore = (ImageButton) findViewById(R.id.btnOKRestore);
        btnExitRestore = (ImageButton) findViewById(R.id.btnExitRestore);
        xPath = (TextView) findViewById(R.id.ePath);
        xFile = (TextView) findViewById(R.id.eFile);
        lvData = (ListView) findViewById(R.id.lvData);
 
        xUserCode = (getIntent().getLongExtra("UserCode", 0));
 
        btnOpenFile.setOnClickListener(this);
        btnOKRestore.setOnClickListener(this);
        btnExitRestore.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View v) {
 
        switch (v.getId()) {
            case R.id.btnOpenFile:
                ClicOpenFile();
                break;
 
            case R.id.btnOKRestore:
                ClicbtnOKRestore();
                break;
 
            case R.id.btnExitRestore:
                ClickbtnExitRestore();
                break;
        }
    }
 
    private void ClickbtnExitRestore() {
        finish();
    }
 
    private void ClicbtnOKRestore() {
 
    }
 
    private void ClicOpenFile() {
        Intent intent = new Intent(this, FileManager.class);
        startActivityForResult(intent, 1);
    }
 
    // Метод для открытия файлаa
    private void readFile(String aFileName) {
        FileInputStream is = null;
        InputStreamReader in = null;
        BufferedReader br = null;
        a = "";
        arrayList = new ArrayList<String>();
        try {
            File f = new File(aFileName);
            is = new FileInputStream(f);
            in = new InputStreamReader(is, "UTF-8");
            br = new BufferedReader(in);
            while ((str = br.readLine()) != null) {
                // Заполнение Array
                a = a + '"' + i + "," + str + '"' + "! ";
                list = new String[]{a};
                i = i + 1;
            }
 
            iData = DataAnalise(a);
 
            ImportAdapter = new ImportAdapter(this, iData);
 
            lvData.setAdapter(ImportAdapter);
        } catch (Exception e) {
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                }
            }
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                }
            }
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                }
            }
        }
    }
 
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (data == null) {
            return;
        }
        aPath = data.getStringExtra("url");
        j= aPath.lastIndexOf("/") + 1;
        k= aPath.length();
        xPath.setText(aPath.substring(0, j));
        xFileName = aPath.substring(j,k);
        xFile.setText(xFileName);
        xFileName = xFile.getText().toString();
        j= xFileName.lastIndexOf(".");
        k= xFileName.length() - 4;
        xInventname = (xFileName.substring(0, j));
        xInventMCode = getInventMCode(xInventname);
        if (xInventMCode == 0)
            readFile(aPath);
    }
 
    private long getInventMCode(String vInventNum) {
        long xResult;
        xResult = dbHelper.getInventMCode(vInventNum);
        return xResult;
    }
 
    public ArrayList DataAnalise(String xImportData) {
        String[] arrObj = xImportData.split("!");
        ArrayList<ImportData> aList = new ArrayList<>();
 
        for (int i = 0; i < arrObj.length; i++) {
            String[] tempObj = arrObj[i].split(",");
            if (tempObj.length == SIZE)
                aList.add(new ImportData(tempObj[0], tempObj[1], tempObj[2], tempObj[3], tempObj[4], tempObj[5]));
        }
        return aList;
    }
 
 
}
0
ArmenT
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 44
27.09.2016, 13:36  [ТС] #10
вот что происходит не посредственно перед крушением а также лог ошибки крушения смотрите
scrin 1.png и scrin 2.png
0
Миниатюры
Crash Activity при присвоении ItemList-у Adapter-a   Crash Activity при присвоении ItemList-у Adapter-a  
ArmenT
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 44
27.09.2016, 13:40  [ТС] #11
Ребята что я делаю не так ???
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
27.09.2016, 14:15 #12
public View getView и return ((ImportData) getItem(position)) как-то слабо сочетаются.
должно быть return view;
0
ArmenT
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 44
27.09.2016, 15:18  [ТС] #13
Цитата Сообщение от OlegJV Посмотреть сообщение
public View getView и return ((ImportData) getItem(position)) как-то слабо сочетаются.
должно быть return view;
так он так и написан

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // используем созданные, но не используемые view
        View view = convertView;
        if (view == null) {
            view = lInflater.inflate(R.layout.list_item_for_import, parent, false);
        }
        ImportData p = getProduct(position);
        ((TextView) view.findViewById(R.id.tRecNum)).setText(p.getxRecNum());
        ((TextView) view.findViewById(R.id.tInvoiceNum)).setText(p.getxInvoiceNum());
        ((TextView) view.findViewById(R.id.tPostDesc)).setText(p.getxPostDesc());
        ((TextView) view.findViewById(R.id.tInvoiceFullNum)).setText(p.getxInvoiceFullNum());
        ((TextView) view.findViewById(R.id.tParcelQw)).setText(p.getxParcelQw());
        ((TextView) view.findViewById(R.id.tZonaDesc)).setText(p.getxZonaDesc());
        return view;
    }

я не понял что тут не так или я не там посмотрел?

Добавлено через 15 минут
напиши как должлно быть
0
Pablito
2499 / 1983 / 618
Регистрация: 12.05.2014
Сообщений: 6,925
Завершенные тесты: 1
27.09.2016, 15:20 #14
Цитата Сообщение от ArmenT Посмотреть сообщение
Ребята что я делаю не так ???
зачем каждый раз спрашивать как попугай одно и тоже, сли ты не читаешь что тебе пишут?
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
27.09.2016, 15:52 #15
Вместо

Java
1
2
3
ImportData getProduct(int position) {
        return ((ImportData) getItem(position));
}
надо

Java
1
2
3
ImportData getProduct(int position) {
        return products.getItem(position);
}
Добавлено через 20 минут
Вместо

Java
1
2
3
ImportData getProduct(int position) {
        return ((ImportData) getItem(position));
}
надо

Java
1
2
3
ImportData getProduct(int position) {
        return products.getItem(position);
}
0
27.09.2016, 15:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2016, 15:52
Привет! Вот еще темы с ответами:

Вызвать из одной activity функцию другой activity - Программирование Android
вызвать из одного activity функцию другой activity Подскажите, можно ли такое реализовать? Допустим у меня есть основная активити и...

Как вызвать Activity не из Activity? - Программирование Android
Приложение перехватываем входящие СМС. Есть класс унаследованный от BroadcastReceiver, который обозначен в манифесте как приемник...

Создание Activity в другом Activity - Программирование Android
Нормально ли создавать экземпляр какого-либо Activity в текущем Activity? Дело в том, что код, нужный для работы с данными находится в...

Ошибка при переходе на новое Activity - Программирование Android
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? При переходе на новое активити программа выдает ошибку и вылетает. Я...


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

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

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