Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
19 / 19 / 1
Регистрация: 12.03.2018
Сообщений: 252

Android и localhost

06.02.2019, 16:01. Показов 2470. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Это ужасно. У меня была простейшая задача по нажатию кнопки должен создаваться новый activity и в нем при onStart() должен был дернуться api со списком валют, и вывести их на экран в виде кнопок....

и тут полный п***

1) Почему выполнение действий я не могу дернуть api в методе onStart()????? Почему нужен обязательно новый поток?
2) Почему все ресты должны дергаться Асинхронно???? Почему нельзя синхронно?
3) Почему я не могу дергать api сервера на localhost??? http://localhost:8080/api/v1/currencies

В итоге я полдня пытался сделать по сути элементарную вещь...
И все равно ни чего не работает.

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
  @Override
    protected void onStart() {
        super.onStart();
 
        List<String> listCurrencyCodes = new ArrayList<>();
 
        try{
            OkHttpClient okHttpClient = new OkHttpClient();
            Request request = new Request.Builder()
                    .url("http://192.168.0.1:8080/api/v1/currencies")
                    .build();
            ObjectMapper mapper = new ObjectMapper();
            okHttpClient.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    e.printStackTrace();
                }
                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    if(response.isSuccessful()) {
                        runOnUiThread(() -> {
                            JsonNode valuesNode = null;
                            try {
                                String responseString = response.body().string();
                                System.out.println(responseString);
                                valuesNode = mapper.readTree(responseString);
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                            for (JsonNode node : valuesNode) {
                                listCurrencyCodes.add(node.asText());
                            }
                            for (int i = 0; i < listCurrencyCodes.size(); ++i) {
                                Button button = new Button(getApplicationContext());
                                button.setText(listCurrencyCodes.get(i));
                                button.setId(i);
 
                                LinearLayout linearLayout = findViewById(R.id.linerLayout);
                                linearLayout.addView(button);
                            }
                        });
 
 
                    }
 
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.02.2019, 16:01
Ответы с готовыми решениями:

Как подключить эмулятор Android Studio к localhost ПК?
Пробовал писать &quot;localhost&quot; и имя ПК, но не подключается.

localhost:8080 работает, а localhost/ - нет
Поменял номер порта на 8080. Теперь localhost:8080 работает, а просто localhost/ - нет. Я хочу, чтоб номер порта был 8080, но чтоб локально...

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\vpn\conn.php:1) in Z:\home\localhost\www\
Добрый день... Помогите пожалуйста, не могу понят в чем проблема. Выводить такое ошибку Warning: Cannot modify header information - headers...

11
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
06.02.2019, 16:04
Цитата Сообщение от Artyr2 Посмотреть сообщение
я не могу дернуть api в методе onStart()
я вот могу, почему ты не можешь - непонятно
Цитата Сообщение от Artyr2 Посмотреть сообщение
Почему нельзя синхронно?
религия запрещает или что?
Цитата Сообщение от Artyr2 Посмотреть сообщение
Почему я не могу дергать api сервера на localhost
см ответ на первый вопрос
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.02.2019, 16:11
потому что генетика

и по теме - при старте приложения на эмуляторе/телефоне localhost будет означать адрес устройства, а не твоего сервера
там должен быть прописан ip адрес сервера
0
19 / 19 / 1
Регистрация: 12.03.2018
Сообщений: 252
06.02.2019, 16:23  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
я вот могу, почему ты не можешь - непонятно
Код:
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
@Override
    protected void onStart() {
        super.onStart();
 
        List<String> listCurrencyCodes = new ArrayList<>();
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder()
                .url("http://192.168.2.114:8080/api/v1/currencies")
                .build();
        ObjectMapper mapper = new ObjectMapper();
        JsonNode valuesNode = null;
        try {
            valuesNode = mapper.readTree(okHttpClient.newCall(request).execute().body().string());
        } catch (IOException e) {
            e.printStackTrace();
        }
        List<String> list = new ArrayList<>();
        for (JsonNode node : valuesNode) {
            list.add(node.asText());
        }
 
        for (int i = 0; i < listCurrencyCodes.size(); ++i) {
            Button button = new Button(getApplicationContext());
            button.setText(listCurrencyCodes.get(i));
            button.setId(i);
 
            LinearLayout linearLayout = findViewById(R.id.linerLayout);
            linearLayout.addView(button);
        }
    }
Ошибка:
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
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myapplication, PID: 15816
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.Currency}: android.os.NetworkOnMainThreadException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6077)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
     Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1303)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:333)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
        at java.net.Socket.connect(Socket.java:586)
        at okhttp3.internal.platform.AndroidPlatform.connectSocket(AndroidPlatform.java:71)
        at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:247)
        at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:167)
        at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257)
        at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
        at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
        at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:264)
        at okhttp3.RealCall.execute(RealCall.java:93)
        at com.example.myapplication.Currency.onStart(Currency.java:38)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1248)
        at android.app.Activity.performStart(Activity.java:6679)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2609)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)*
        at android.app.ActivityThread.-wrap12(ActivityThread.java)*
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)*
        at android.os.Handler.dispatchMessage(Handler.java:102)*
        at android.os.Looper.loop(Looper.java:154)*
        at android.app.ActivityThread.main(ActivityThread.java:6077)*
        at java.lang.reflect.Method.invoke(Native Method)*
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)*
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)*
Добавлено через 6 минут
Если загуглить ошибку то выходит это

Ну... не знаю... Как бы вы написали этот код? У меня все то что я пытаюсь сделать тут, работает идеально в spring boot. А на Android не понятно. Как делать такие элементарные вещи.

Добавлено через 1 минуту
Цитата Сообщение от Pablito Посмотреть сообщение
там должен быть прописан ip адрес сервера
"http://192.168.2.114:8080/api/v1/currencies" это оно? Из insomnia работает, могу дергать.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.02.2019, 16:31
Лучший ответ Сообщение было отмечено Artyr2 как решение

Решение

вместо execute() надо использовать enqueue(тут callback)
0
19 / 19 / 1
Регистрация: 12.03.2018
Сообщений: 252
06.02.2019, 16:34  [ТС]
Цитата Сообщение от Pablito Посмотреть сообщение
вместо execute() надо использовать enqueue(тут callback)
Цитата Сообщение от xoraxax Посмотреть сообщение
Почему нельзя синхронно?
религия запрещает или что?
enqueue это асинхронный вызов. xoraxax сказал что можно синхронно... Я еще больше путаюсь
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.02.2019, 16:36
в андроиде нельзя делать сетевые запросы в UI потоке, все, точка
1
19 / 19 / 1
Регистрация: 12.03.2018
Сообщений: 252
06.02.2019, 16:38  [ТС]
Цитата Сообщение от Pablito Посмотреть сообщение
в андроиде нельзя делать сетевые запросы в UI потоке, все, точка
Тогда я делаю новый поток, в нем делаю запрос, получаю данные. Мне надо перебросить данные в UI поток? Или я могу менять UI через тот в котором получил данные?
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.02.2019, 16:46
если сделать как предложил я выше, то в onResponse() прилетит результат или в onFailure() ошибка
оба этих метода вызываются уже в UI потоке, поэтому там можно делать с результатом что угодно
1
19 / 19 / 1
Регистрация: 12.03.2018
Сообщений: 252
06.02.2019, 16:51  [ТС]
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
@Override
    protected void onStart() {
        super.onStart();
 
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder()
                .url("http://192.168.2.114:8080/api/v1/currencies")
                .build();
 
        okHttpClient.newCall(request).enqueue(new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
                        e.printStackTrace();
                    }
 
                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        if(response.isSuccessful()) {
                            ObjectMapper mapper = new ObjectMapper();
                            JsonNode valuesNode = mapper.readTree(response.body().string());
                            System.out.println(mapper.readTree(response.body().string()));
                            List<String> listCurrencyCodes = new ArrayList<>();
                            for (JsonNode node : valuesNode) {
                                listCurrencyCodes.add(node.asText());
                            }
 
                            for (int i = 0; i < listCurrencyCodes.size(); ++i) {
                                Button button = new Button(getApplicationContext());
                                button.setText(listCurrencyCodes.get(i));
                                button.setId(i);
 
                                LinearLayout linearLayout = findViewById(R.id.linerLayout);
                                linearLayout.addView(button);
                            }
                        }
                    }
                });
    }
Спасибо, вроде начинаю понимать. Но последний момент:
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
W/System.err: java.net.SocketTimeoutException: connect timed out
W/System.err:     at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
        at java.net.Socket.connect(Socket.java:586)
        at okhttp3.internal.platform.AndroidPlatform.connectSocket(AndroidPlatform.java:71)
W/System.err:     at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:247)
        at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:167)
        at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257)
        at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
        at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
        at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94)
W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:264)
        at okhttp3.RealCall$AsyncCall.execute(RealCall.java:210)
W/System.err:     at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)
W/System.err: java.net.SocketTimeoutException: connect timed out
W/System.err:     at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
        at java.net.Socket.connect(Socket.java:586)
        at okhttp3.internal.platform.AndroidPlatform.connectSocket(AndroidPlatform.java:71)
        at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:247)
W/System.err:     at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:167)
        at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257)
        at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
        at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
        at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:264)
W/System.err:     at okhttp3.RealCall$AsyncCall.execute(RealCall.java:210)
        at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)
У меня открыта IDE Intellij idea там запущен сервер, и к нему я обращаюсь. Но у меня connect timed out
Тестирую я с помощью эмулятора android который шел в месте с Android Studio

Я так понимаю это надо как то настроить что бы смогли общаться.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.02.2019, 16:58
а если там указать 10.0.2.2 вместо 192.168.2.114 ?
и я бы для уверенности на время теста вообще выключил для локальной сети виндовый firewall
1
19 / 19 / 1
Регистрация: 12.03.2018
Сообщений: 252
06.02.2019, 17:05  [ТС]
Цитата Сообщение от Pablito Посмотреть сообщение
а если там указать 10.0.2.2 вместо 192.168.2.114 ?
и я бы для уверенности на время теста вообще выключил для локальной сети виндовый firewall
E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
Process: com.example.myapplication, PID: 17644
java.lang.IllegalStateException: closed
at okio.RealBufferedSource.select(RealBuffe redSource.java:93)
at okhttp3.internal.Util.bomAwareCharset(Ut il.java:467)
at okhttp3.ResponseBody.string(ResponseBody .java:181)
at com.example.myapplication.Currency$1.onR esponse(Currency.java:49)
at okhttp3.RealCall$AsyncCall.execute(RealC all.java:216)
at okhttp3.internal.NamedRunnable.run(Named Runnable.java:32)
at java.util.concurrent.ThreadPoolExecutor. runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$ Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)

Добавлено через 1 минуту
Все работает))))
Надо было запустить UI поток заново!)

Вот код:
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
@Override
    protected void onStart() {
        super.onStart();
 
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder()
                .url("http://10.0.2.2:8080/api/v1/currencies")
                .build();
 
        okHttpClient.newCall(request).enqueue(new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
                        e.printStackTrace();
                    }
 
                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        if(response.isSuccessful()) {
                            ObjectMapper mapper = new ObjectMapper();
                            JsonNode valuesNode = mapper.readTree(response.body().string());
                            List<String> listCurrencyCodes = new ArrayList<>();
                            for (JsonNode node : valuesNode) {
                                listCurrencyCodes.add(node.asText());
                            }
                            runOnUiThread(() -> {
                                for (int i = 0; i < listCurrencyCodes.size(); ++i) {
                                    Button button = new Button(getApplicationContext());
                                    button.setText(listCurrencyCodes.get(i));
                                    button.setId(i);
 
                                    LinearLayout linearLayout = findViewById(R.id.linerLayout);
                                    linearLayout.addView(button);
                                }
                            });
                        }
                    }
                });
    }
Всем спасибо! тема закрыта)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.02.2019, 17:05
Помогаю со студенческими работами здесь

Warning: Cannot modify header information - headers already sent by (output started at E:\home\localhost\www\1\add.php:56) in E:\home\localhost\www\1\
Привет всем! Подскажите пожалуйста почему постоянно выскакивает предупреждение: Warning: Cannot modify header information - headers...

Как в Yii 2 изменить URl с http://localhost/index.php?r=site%2Findex на http://localhost/index ?
Очень нужно нормально розставить пути ,делал по видео выдало ошибку.На каждой странице http://localhost/index.php?r=site%2+имя файла , а...

В чем разница между командами "localhost/phpmyadmin" и "localhost/tools/phpmyadmin"
У меня настроен denwer. чтобы войти в phpmyadmin мне нужно в браузере ввести localhost/tools/phpmyadmin/ . если я ввожу так:...

Откуда берутся атрибуты android:layout_width и android:layout_height в элементе LinearLayout?
Недавно начал изучать Android API, а сегодня более менее разобрал основы синтакиса XML. Затем стал разбирать следующий пример: ...

Работа с файлами android которые находятся не в папке проекта Android Studio
Всех приветствую, начал разработку приложения под Android и не могу разобраться как работать с файлами которые находятся не в папке...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru