Страница 5 из 5

Re: Урок 18. Меняем layoutParams в рабочем приложении

Добавлено: 25 фев 2015, 21:25
skortabeast
дошел до 18 урока, и все, короч ошибка и приложение крашится, юзаю андроид студио
если у кого такое было, маякните
вопрос закрыт, если у кого будет такое , то класс MainActivity пабликом делайте
02-25 18:16:59.458 2331-2331/ru.startandroid.p0181dynamiclayout3 D/AndroidRuntime﹕ Shutting down VM
02-25 18:16:59.459 2331-2331/ru.startandroid.p0181dynamiclayout3 E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: ru.startandroid.p0181dynamiclayout3, PID: 2331
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{ru.startandroid.p0181dynamiclayout3/ru.startandroid.p0181dynamiclayout3.MainActivity}: java.lang.IllegalAccessException: class ru.startandroid.p0181dynamiclayout3.MainActivity is not accessible from class android.app.Instrumentation
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.IllegalAccessException: class ru.startandroid.p0181dynamiclayout3.MainActivity is not accessible from class android.app.Instrumentation
at java.lang.Class.newInstance(Class.java:1557)
at android.app.Instrumentation.newActivity(Instrumentation.java:1065)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
02-25 18:17:01.819 2331-2331/ru.startandroid.p0181dynamiclayout3 I/Process﹕ Sending signal. PID: 2331 SIG: 9
02-25 18:18:24.719 2400-2400/ru.startandroid.p0181dynamiclayout3 D/AndroidRuntime﹕ Shutting down VM
02-25 18:18:24.719 2400-2400/ru.startandroid.p0181dynamiclayout3 E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: ru.startandroid.p0181dynamiclayout3, PID: 2400
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{ru.startandroid.p0181dynamiclayout3/ru.startandroid.p0181dynamiclayout3.MainActivity}: java.lang.IllegalAccessException: class ru.startandroid.p0181dynamiclayout3.MainActivity is not accessible from class android.app.Instrumentation
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.IllegalAccessException: class ru.startandroid.p0181dynamiclayout3.MainActivity is not accessible from class android.app.Instrumentation
at java.lang.Class.newInstance(Class.java:1557)
at android.app.Instrumentation.newActivity(Instrumentation.java:1065)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
02-25 18:18:58.419 2469-2469/ru.startandroid.p0181dynamiclayout3 I/art﹕ Late-enabling -Xcheck:jni
02-25 18:18:58.452 2469-2469/ru.startandroid.p0181dynamiclayout3 D/AndroidRuntime﹕ Shutting down VM
02-25 18:18:58.453 2469-2469/ru.startandroid.p0181dynamiclayout3 E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: ru.startandroid.p0181dynamiclayout3, PID: 2469
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{ru.startandroid.p0181dynamiclayout3/ru.startandroid.p0181dynamiclayout3.MainActivity}: java.lang.IllegalAccessException: class ru.startandroid.p0181dynamiclayout3.MainActivity is not accessible from class android.app.Instrumentation
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.IllegalAccessException: class ru.startandroid.p0181dynamiclayout3.MainActivity is not accessible from class android.app.Instrumentation
at java.lang.Class.newInstance(Class.java:1557)
at android.app.Instrumentation.newActivity(Instrumentation.java:1065)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)


            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
02-25 18:23:58.625 2469-2469/ru.startandroid.p0181dynamiclayout3 I/Process﹕ Sending signal. PID: 2469 SIG: 9

Re: Урок 18. Меняем layoutParams в рабочем приложении

Добавлено: 25 фев 2015, 22:45
doter.ua
Перешли на студию и создаете активити вручную? Может это и полезно для изучения общей структуры, но в боевых условиях все равно будете пользоваться автосозданием.

Re: Урок 18. Меняем layoutParams в рабочем приложении

Добавлено: 29 май 2015, 20:30
msv_serg
Хотел сделать кнопки без надписей, но программка не работает без кода:
btn1.setText(String.valueOf(leftValue));
btn2.setText(String.valueOf(rightValue));

не пойму в чем причина)

Re: Урок 18. Меняем layoutParams в рабочем приложении

Добавлено: 29 май 2015, 21:02
Donart
msv_serg писал(а):Хотел сделать кнопки без надписей, но программка не работает без кода:
btn1.setText(String.valueOf(leftValue));
btn2.setText(String.valueOf(rightValue));

не пойму в чем причина)
Уже обсуждалось в этой теме, и ответ дан в уроке.

Re: Урок 18. Меняем layoutParams в рабочем приложении

Добавлено: 30 май 2015, 10:43
msv_serg
Donart писал(а):
msv_serg писал(а):Хотел сделать кнопки без надписей, но программка не работает без кода:
btn1.setText(String.valueOf(leftValue));
btn2.setText(String.valueOf(rightValue));

не пойму в чем причина)
Уже обсуждалось в этой теме, и ответ дан в уроке.
спасибо :)

Re: Урок 18. Меняем layoutParams в рабочем приложении

Добавлено: 26 июн 2015, 08:15
Quedo
Здравствуйте я не понял каким образом мы получили доступ к полю weight через метод getLayoutParams(). Для этого же есть setLayoutParams(). Я прочитал все что здесь написано, но ответа не нашел.
Я так понимаю многие хотели спросить именно об этом, а не о разнице переменных ссылочного типа от обычных.

Re: Урок 18. Меняем layoutParams в рабочем приложении

Добавлено: 26 июн 2015, 08:54
doter.ua
Quedo писал(а):Здравствуйте я не понял каким образом мы получили доступ к полю weight через метод getLayoutParams(). Для этого же есть setLayoutParams(). Я прочитал все что здесь написано, но ответа не нашел.
Я так понимаю многие хотели спросить именно об этом, а не о разнице переменных ссылочного типа от обычных.
Свежесозданный парамс с дефолтными настройками может отличаться от того, что уже есть у элемента. Чтобы ничего не перетереть у вью берут и меняют его собственный парамс.

Re: Урок 18. Меняем layoutParams в рабочем приложении

Добавлено: 26 июн 2015, 09:25
Quedo
Я видимо некорректно задал вопрос. Меня смущает надпись такого характера: btn1.getLayoutParams().weight = leftValue, здесь значение поля weight задается через геттер, а не через сеттер. Где об этом можно почитать?

Re: Урок 18. Меняем layoutParams в рабочем приложении

Добавлено: 31 июл 2015, 00:55
FLancer
Quedo писал(а):Я видимо некорректно задал вопрос. Меня смущает надпись такого характера: btn1.getLayoutParams().weight = leftValue, здесь значение поля weight задается через геттер, а не через сеттер. Где об этом можно почитать?
А где есть такая строчка в коде?

Re: Урок 18. Меняем layoutParams в рабочем приложении

Добавлено: 07 дек 2015, 21:15
Explo
обьясниете пожалуйста строчку кода
Lparams1 = (LinearLayout.LayoutParams) btn1.getLayoutParams();
никак не могу понять фразу "Мы используем метод getLayoutParams для получения LayoutParams компонента. Но этот метод возвращает базовый ViewGroup.LayoutParams, а нам нужен LinearLayout.LayoutParams, поэтому делаем преобразование. В результате - lParams1 и lParams2 теперь являются LayoutParams для компонентов btn1 и btn2. Т.е. работая, например, с lParams1 мы влияем на btn1"
Может ктонибудь еще сильнее разжевать?

Re: Урок 18. Меняем layoutParams в рабочем приложении

Добавлено: 04 ноя 2017, 00:36
Kazakova_Net
Добрый день!
Делаю задание по уроку, но функционал работает кривовато. При движении ползунка кнопки меняют размер неадекватно (см. скрин по ссылке) https://i.imgur.com/af0ZNK0.png
В чем может быть проблема?

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <SeekBar
        android:id="@+id/sbWeight"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:max="100"
        android:progress="50" />

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Button1" />

        <Button
            android:id="@+id/btn2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Button2" />
    </LinearLayout>
</LinearLayout>

Код: Выделить всё

package ru.startandroid.dynamiclayout3;

import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.SeekBar;

public class MainActivity extends Activity implements SeekBar.OnSeekBarChangeListener {
    SeekBar sbWeight;
    Button btn1;
    Button btn2;

    LinearLayout.LayoutParams lParams1;
    LinearLayout.LayoutParams lParams2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        sbWeight = findViewById(R.id.sbWeight);
        sbWeight.setOnSeekBarChangeListener(this);

        btn1 = findViewById(R.id.btn1);
        btn2 = findViewById(R.id.btn2);

        lParams1 = (LinearLayout.LayoutParams) btn1.getLayoutParams();
        lParams2 = (LinearLayout.LayoutParams) btn1.getLayoutParams();
    }

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        int leftValue = progress;
        int rightValue = seekBar.getMax() - progress;

        // настраиваем вес
        lParams1.weight = leftValue;
        lParams2.weight = rightValue;

        // в текст кнопок пишем значения переменных
        btn1.setText(String.valueOf(leftValue));
        btn2.setText(String.valueOf(rightValue));
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {

    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {

    }
}

Re: Урок 18. Меняем layoutParams в рабочем приложении

Добавлено: 10 фев 2022, 12:39
tavka
добрый день.
у меня немного другой вопрос. android studio 2021.1.1 patch 1
в activity_main.xml у кнопки можно прописать процедуру обработки клика
<Button
android:id="@+id/btn1"
android:onClick="ActionOnClickButton"

почему такое же нельзя прописать в SeekBar, я про процедуру onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
а приходится уже все это назначать в mainActivity.java
то есть мне удобнее было бы нарисовать в desigen кнопку или seekbar и в списке параметров выбрать нужный action и там уже прописать действия :)))