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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Freham
2 / 2 / 0
Регистрация: 14.10.2013
Сообщений: 157
#1

Переход между активностями! - Android

27.12.2013, 18:39. Просмотров 1327. Ответов 13
Метки нет (Все метки)

не могу перейти между активностями!

вот весь лог


12-27 14:32:51.611: D/dalvikvm(330): GC_EXTERNAL_ALLOC freed 83K, 51% free 2643K/5379K, external 1859K/2137K, paused 61ms
12-27 14:32:51.761: D/dalvikvm(330): GC_EXTERNAL_ALLOC freed 9K, 51% free 2637K/5379K, external 2190K/2514K, paused 56ms
12-27 14:32:51.861: D/dalvikvm(330): GC_EXTERNAL_ALLOC freed 37K, 52% free 2602K/5379K, external 2611K/3027K, paused 53ms
12-27 14:32:52.021: D/dalvikvm(330): GC_EXTERNAL_ALLOC freed 1K, 52% free 2605K/5379K, external 3455K/3554K, paused 53ms
12-27 14:32:52.181: D/dalvikvm(330): GC_EXTERNAL_ALLOC freed 1K, 52% free 2608K/5379K, external 4299K/4608K, paused 55ms
12-27 14:32:52.411: D/dalvikvm(330): GC_EXTERNAL_ALLOC freed 2K, 52% free 2614K/5379K, external 5565K/5661K, paused 55ms
12-27 14:32:54.431: D/AndroidRuntime(330): Shutting down VM
12-27 14:32:54.431: W/dalvikvm(330): threadid=1: thread exiting with uncaught exception (group=0x40015560)
12-27 14:32:54.451: E/AndroidRuntime(330): FATAL EXCEPTION: main
12-27 14:32:54.451: E/AndroidRuntime(330): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.yarche/com.example.yarche.Taksi_activity}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
12-27 14:32:54.451: E/AndroidRuntime(330): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
12-27 14:32:54.451: E/AndroidRuntime(330): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
12-27 14:32:54.451: E/AndroidRuntime(330): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
12-27 14:32:54.451: E/AndroidRuntime(330): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
12-27 14:32:54.451: E/AndroidRuntime(330): at android.os.Handler.dispatchMessage(Handler.java:99)
12-27 14:32:54.451: E/AndroidRuntime(330): at android.os.Looper.loop(Looper.java:123)
12-27 14:32:54.451: E/AndroidRuntime(330): at android.app.ActivityThread.main(ActivityThread.java:3683)
12-27 14:32:54.451: E/AndroidRuntime(330): at java.lang.reflect.Method.invokeNative(Native Method)
12-27 14:32:54.451: E/AndroidRuntime(330): at java.lang.reflect.Method.invoke(Method.java:507)
12-27 14:32:54.451: E/AndroidRuntime(330): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-27 14:32:54.451: E/AndroidRuntime(330): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-27 14:32:54.451: E/AndroidRuntime(330): at dalvik.system.NativeStart.main(Native Method)
12-27 14:32:54.451: E/AndroidRuntime(330): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
12-27 14:32:54.451: E/AndroidRuntime(330): at android.app.ListActivity.onContentChanged(ListActivity.java:243)
12-27 14:32:54.451: E/AndroidRuntime(330): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:210)
12-27 14:32:54.451: E/AndroidRuntime(330): at android.app.Activity.setContentView(Activity.java:1657)
12-27 14:32:54.451: E/AndroidRuntime(330): at com.example.yarche.Taksi_activity.onCreate(Taksi_activity.java:33)
12-27 14:32:54.451: E/AndroidRuntime(330): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-27 14:32:54.451: E/AndroidRuntime(330): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
12-27 14:32:54.451: E/AndroidRuntime(330): ... 11 more

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
27.12.2013, 19:44     Переход между активностями! #2
Покажите код лучше
Freham
2 / 2 / 0
Регистрация: 14.10.2013
Сообщений: 157
27.12.2013, 19:57  [ТС]     Переход между активностями! #3
Цитата Сообщение от NOSC Посмотреть сообщение
Покажите код лучше

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
package com.example.yarche;
 
import java.util.ArrayList;
 
import com.yarche.database.DataBase;
 
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
 
public class Taksi_activity extends ListActivity {
    private static final String DB_NAME = "myDBHelper";
    //Хорошей практикой является задание имен полей БД константами
    private static final String TABLE_NAME = "Taksi";
    private static final String ID = "_id";
    private static final String NAME = "name";
    
    private SQLiteDatabase database;
    private ListView listView;
    private ArrayList<String> Taksi;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_taksi_activity);
        
        //Наш ключевой хелпер
        DataBase dbOpenHelper = new DataBase(this, DB_NAME);
        database = dbOpenHelper.openDataBase();
        //Все, база открыта!
        fillFreinds();
        setUpList();      
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.taksi_activity, menu);
        return true;
    }
 
    private void setUpList() {
        //Испльзуем стандартный адаптер и layout элемента для краткости
        setListAdapter(new ArrayAdapter<String>(this,
                        android.R.layout.simple_list_item_1, Taksi));
        listView = getListView();
        
        //Подарим себе тост, для души
        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                                int position,long id) {
                Toast.makeText(getApplicationContext(),
                            ((TextView) view).getText() +
                             " could be iDev's friend",
                             Toast.LENGTH_SHORT).show();                
            }
        });
    }
    
    //Извлечение элментов из базы данных
    private void fillFreinds() {
        Taksi = new ArrayList<String>();
        Cursor friendCursor = database.query(TABLE_NAME,
                                             new String[] 
                                             {ID, NAME},
                                             null, null, null, null
                                             , NAME);
        friendCursor.moveToFirst();
        if(!friendCursor.isAfterLast()) {
            do {
                String name = friendCursor.getString(1);
                Taksi.add(name);
            } while (friendCursor.moveToNext());
        }
        friendCursor.close();
    }
 
    public ArrayList<String> getTaksi() {
        return Taksi;
    }
 
    public void setTaksi(ArrayList<String> taksi) {
        Taksi = taksi;
    }
}
angryrobot
Командир зеленых роботов
 Аватар для angryrobot
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
27.12.2013, 20:40     Переход между активностями! #4
Попробуйте убрать
setContentView(R.layout.activity_taksi_activity);
А если в этом layout'е есть что-то важное для вас, то можно просто присвоить айдишник "android.R.id.list" ListView который находится в этом layout'е.
Freham
2 / 2 / 0
Регистрация: 14.10.2013
Сообщений: 157
27.12.2013, 20:47  [ТС]     Переход между активностями! #5
Цитата Сообщение от angryrobot Посмотреть сообщение
Попробуйте убрать
setContentView(R.layout.activity_taksi_activity);
А если в этом layout'е есть что-то важное для вас, то можно просто присвоить айдишник "android.R.id.list" ListView который находится в этом layout'е.
не прокатила! тоже самое
verylazy
Заблокирован
27.12.2013, 21:56     Переход между активностями! #6
setContentView(activity_taksi_activity);
может так?
activity_taksi_activity это же xml файл?
Freham
2 / 2 / 0
Регистрация: 14.10.2013
Сообщений: 157
27.12.2013, 21:58  [ТС]     Переход между активностями! #7
Цитата Сообщение от verylazy Посмотреть сообщение
setContentView(activity_taksi_activity);
может так?
activity_taksi_activity это же xml файл?
да это xml только так по поедет! ошибку выдаст!
ASDFD12
32 / 32 / 5
Регистрация: 15.09.2012
Сообщений: 420
27.12.2013, 22:09     Переход между активностями! #8
попробуйте так
Java
1
2
3
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                R.layout.rowlayout, R.id.label, values);
        setListAdapter(adapter);
YuraAAA
 Аватар для YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
28.12.2013, 21:13     Переход между активностями! #9
Freham, в xml id должен быть такой
XML
1
<ListView android:id="@android:id/list"
Freham
2 / 2 / 0
Регистрация: 14.10.2013
Сообщений: 157
30.12.2013, 18:12  [ТС]     Переход между активностями! #10
Java
1
2
3
setListAdapter(new ArrayAdapter<String>(this,
                        android.R.layout.simple_list_item_1, sos));
    вот эта строка -->  listView = getListView();
Строка которая выделена, отсутствовала, эта и есть причина того что не переходила на другую страницу!
Но getListView() подчеркивается красным, помогите узнать! в чем причина?
dr_yand
 Аватар для dr_yand
156 / 138 / 6
Регистрация: 13.03.2013
Сообщений: 321
Записей в блоге: 3
30.12.2013, 22:42     Переход между активностями! #11
Цитата Сообщение от Freham Посмотреть сообщение
Но getListView() подчеркивается красным, помогите узнать! в чем причина?
а среда разработки какую подсказку выводит?
Freham
2 / 2 / 0
Регистрация: 14.10.2013
Сообщений: 157
05.01.2014, 14:39  [ТС]     Переход между активностями! #12
Я решил ошибку, но теперь у меня не может открыть базу данных
YuraAAA
 Аватар для YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
05.01.2014, 16:30     Переход между активностями! #13
Freham, в смысле? Что значит не открывает? Ошибка?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2014, 15:25     Переход между активностями!
Еще ссылки по теме:

Android Переход между окнами
Android Затруднение с переключением между активностями
Android Кто как передаёт коллекции между активностями, классами?
Android Переход между точками по осям X-Y
Переход между активити Android

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

Или воспользуйтесь поиском по форуму:
Freham
2 / 2 / 0
Регистрация: 14.10.2013
Сообщений: 157
06.01.2014, 15:25  [ТС]     Переход между активностями! #14
Цитата Сообщение от YuraAAA Посмотреть сообщение
Freham, в смысле? Что значит не открывает? Ошибка?
нет ошибок вообще нет, просто не выводит данные в базе!

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello_world"
    />
    
 <ListView 
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    </ListView>
</LinearLayout>
вот xml
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
package com.example.yarch;
 
import java.util.ArrayList;
 
import com.yarche.DataBase.DataBaseHelper;
 
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
 
 
public class Sos extends ListActivity {
    private static final String DB_NAME = "yar.sqlite3";
    //Хорошей практикой является задание имен полей БД константами
    private static final String TABLE_NAME = "sos";
    private static final String ID = "_id";
    private static final String NAME = "name";
    
    private SQLiteDatabase database;
    private ListView listView;
    private ArrayList<String> Array;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sos);
        
        //Наш ключевой хелпер
       DataBaseHelper dbOpenHelper = new DataBaseHelper(this, DB_NAME);
        database = dbOpenHelper.openDataBase();
        //Все, база открыта!
        fillFreinds();
        setUpList();  
    }
 
    private void setUpList() {
        //Испльзуем стандартный адаптер и layout элемента для краткости
        setListAdapter(new ArrayAdapter<String>(this,
                        android.R.layout.simple_list_item_1, Array));
        listView = getListView();
        
        //Подарим себе тост, для души
        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                                int position,long id) {
                Toast.makeText(getApplicationContext(),
                            ((TextView) view).getText() +
                             " could be iDev's friend",
                             Toast.LENGTH_SHORT).show();                
            }
        });
    }
    
    //Извлечение элментов из базы данных
    private void fillFreinds() {
        Array = new ArrayList<String>();
        Cursor friendCursor = database.query(TABLE_NAME,
                                             new String[] 
                                             {ID, NAME},
                                             null, null, null, null
                                             , NAME);
        friendCursor.moveToFirst();
        if(!friendCursor.isAfterLast()) {
            do {
                String name = friendCursor.getString(1);
                Array.add(name);
            } while (friendCursor.moveToNext());
        }
        friendCursor.close();
    }
}
вот java файл
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
package com.yarche.DataBase;
 
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
 
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
 
public class DataBaseHelper extends SQLiteOpenHelper {
 
    //Путь к папке с базами на устройстве
    public static String DB_PATH;
    //Имя файла с базой
    public static String DB_NAME;
    public SQLiteDatabase database;
    public final Context context;
    
    public SQLiteDatabase getDb() {
        return database;
    }
 
    public DataBaseHelper(Context context, String databaseName) {
        super(context, databaseName, null, 1);
        this.context = context;
        //Составим полный путь к базам для вашего приложения
        String packageName = context.getPackageName();
        DB_PATH = String.format("//data//data//%s//databases//", packageName);
        DB_NAME = databaseName;
        openDataBase();
    }
 
    //Создаст базу, если она не создана
    public void createDataBase() {
        boolean dbExist = checkDataBase();
        if (!dbExist) {
            this.getReadableDatabase();
            try {
                copyDataBase();
            } catch (IOException e) {
                Log.e(this.getClass().toString(), "Copying error");
                throw new Error("Error copying database!");
            }
        } else {
            Log.i(this.getClass().toString(), "Database already exists");
        }
    }
    //Проверка существования базы данных
    private boolean checkDataBase() {
        SQLiteDatabase checkDb = null;
        try {
            String path = DB_PATH + DB_NAME;
            checkDb = SQLiteDatabase.openDatabase(path, null,
                    SQLiteDatabase.OPEN_READONLY);
        } catch (SQLException e) {
            Log.e(this.getClass().toString(), "Error while checking db");
        }
        //Ардроид не любит утечки ресурсов, все должно закрываться
        if (checkDb != null) {
            checkDb.close();
        }
        return checkDb != null;
    }
    //Метод копирования базы
    private void copyDataBase() throws IOException {
        // Открываем поток для чтения из уже созданной нами БД
        //источник в assets
        InputStream externalDbStream = context.getAssets().open(DB_NAME);
 
        // Путь к уже созданной пустой базе в андроиде
        String outFileName = DB_PATH + DB_NAME;
 
        // Теперь создадим поток для записи в эту БД побайтно
        OutputStream localDbStream = new FileOutputStream(outFileName);
 
        // Собственно копирование
        byte[] buffer = new byte[1024];
        int bytesRead;
        while ((bytesRead = externalDbStream.read(buffer)) > 0) {
            localDbStream.write(buffer, 0, bytesRead);
        }
        // Мы будем хорошими мальчиками(девочками) и закроем потоки
        localDbStream.close();
        externalDbStream.close();
 
    }
 
    public SQLiteDatabase openDataBase() throws SQLException {
        String path = DB_PATH + DB_NAME;
        if (database == null) {
            createDataBase();
            database = SQLiteDatabase.openDatabase(path, null,
                SQLiteDatabase.OPEN_READWRITE);
        }
        return database;
    }
    @Override
    public synchronized void close() {
        if (database != null) {
            database.close();
        }
        super.close();
    }
    @Override
    public void onCreate(SQLiteDatabase db) {}
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
}
вот обработчик базы
Yandex
Объявления
06.01.2014, 15:25     Переход между активностями!
Ответ Создать тему
Опции темы

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