Страница 6 из 8

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 19 янв 2015, 14:06
pepsi
кнопок на самом деле больше, они генерируются по определенным критериям из MySQL, и заполняются данными оттуда же. А при нажатии на сгенерированную кнопку я должен получать более подробную инфу по записи из базы.

На форуме конкретно по кнопкам не нашел, выше здесь же люди писали подобные вопросы - на них никто не отвечал.

Можете ли вы дать ссылку где это обсуждалось? Спасибо за быстрый ответ!

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 19 янв 2015, 14:37
Foenix
да потому что уже много раз отвечали
поищи по слову "перебор" или "перебор компонентов" не помню точно.

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 21 янв 2015, 15:50
pepsi
Foenix, спасибо!

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

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 27 янв 2015, 16:15
danek130995
1)При попытке присвоить ID btnNew.setId(); перебрал всевозможные варианты ID-"212" "R.id.dff"-все подчеркивает красным, почему?
2) А чем отличаются методы llMain.removeAllViews(); и llMain.removeAllViewsInLayout();?
Спасибо огромное за ваши уроки!!

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 08 фев 2015, 14:06
dimetradim
Я заметил, что радиокнопки не объявлялись и не инициализировались. Почему это не нужно? Ведь кнопки то объявили. В чем разница?

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 12 фев 2015, 23:04
baturovshurik
Ребята, подскажите пожалуйста

package com.example.application.myapplication;

import android.app.Activity;
import android.content.DialogInterface;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View; ю ю ю юю

public class MainActivity extends Activity implements OnClickListener {

LinearLayout llMain;
и т.д.

Проблема следующая - подчеркивает OnClickListener и хочет переделать в андроид диалогчетатам.
в чем прикол. переписал урок. подчеркнуты "this" и вначале OnClickListener .
честно не знаю что делать. пишу в андроид студио.

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 12 фев 2015, 23:19
baturovshurik
Добавил в импорт
import android.view.View.OnClickListener;
и всё заработало. пздц

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 18 фев 2015, 19:48
Хомка Хомячок
Можно переопределить аппаратную клавишу меню.
Вот код:

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

     @Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {

		if (keyCode == KeyEvent.KEYCODE_MENU) {	
                event.startTracking();
           
                        //TODO: Implement this method
		//Например вывожу короткую инфу, о том что клавиша переопределена
	        Toast.makeText(this, "ПЕРЕОПРЕДЕЛЕНО", Toast.LENGTH_SHORT).show();

		return true;
		}
		return super.onKeyDown(keyCode, event);
	}

Информацию я нарыл здесь http://www.cyberforum.ru/android-dev/thread843920.html
Разумеется внутри, можно накодить своё альтернативно меню, так сказать. Применяя знания, полученные в этом уроке.


Но, я не пойму как, при втором нажатие аппаратной клавиши меню, убрать накоденное альтернативное меню?

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 18 фев 2015, 21:08
Хомка Хомячок
Как найти по id эти динамически созданные кнопки?
Присвоил через setId. Найти стандартным способ не выходит, для того чтобы с ними потом работать.
Они в R.Java не прописываются?

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 18 фев 2015, 22:11
doter.ua
Хомка Хомячок писал(а):Как найти по id эти динамически созданные кнопки?
Присвоил через setId. Найти стандартным способ не выходит, для того чтобы с ними потом работать.
Они в R.Java не прописываются?
Кнопка1 = ....динамически создаем кнопку.
Сохраняй ссылку на Кнопка1, либо объявляй ее на уровне класса.

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 19 фев 2015, 20:02
Хомка Хомячок
Хомка Хомячок писал(а): я не пойму как, при втором нажатие аппаратной клавиши меню, убрать накоденное альтернативное меню?
На 4PDA подсказали, но я понятия не имею как писать это.

План такой.

1.X=0

2.Если нажата кнопка меню, увеличивай значение X на единицу, затем дели полученное пополам, и присваивай это значение Y.

3.Бери дробную часть числа Y, если она равна нулю, то удаляй все View элементы.

4.Если не равна нулю, то ничего не делай.

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 19 фев 2015, 21:14
doter.ua
Хомка Хомячок писал(а):
Хомка Хомячок писал(а): я не пойму как, при втором нажатие аппаратной клавиши меню, убрать накоденное альтернативное меню?
На 4PDA подсказали, но я понятия не имею как писать это.

План такой.

1.X=0

2.Если нажата кнопка меню, увеличивай значение X на единицу, затем дели полученное пополам, и присваивай это значение Y.

3.Бери дробную часть числа Y, если она равна нулю, то удаляй все View элементы.

4.Если не равна нулю, то ничего не делай.
Пару моментов:
1) Когда используется экшен бар? - например, когда есть список действий, для которых не хочется отводить отдельное место на экране, т.е. спрятать их (в выпадающей менюшке или на самом экшен баре).
2) Когда используется контекстное меню? - никогда 8-) .

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 19 фев 2015, 22:14
Хомка Хомячок
doter.ua писал(а):
Я просто хочу сделать нормальное, по внешнему виду меню. Мной движет только то, что мне неприятен вид стандартного. Оно ущербное. Я очень удивляюсь, что большинство разработчиков, не делают меню собственного оформления. И оставляют ущербное андроидовское. Я хочу сделать свое, да с анимацией. И потом приткнуть его в свой недобраузер.
Но для начала, мне необходимо сделать альтернативное меню, состоящее хотя бы из одного элемента. Так как, если удастся сделать одноэлементное меню, то не трудно добавить больше.
Мне хочется видеть приятное на глаз меню. Только и всего.

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 19 фев 2015, 23:34
Хомка Хомячок
Oй, я кажется наконец разобрался как это написать со счетчиком:

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

//не забудьте, там в начале обьявить:

        //int x=0;

	//int y;

	//int z;
	
//ниже по коду, t1 - это у меня элемент TextView.


	
//Для версия 1.х

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {

		//Проверяем какая кнопка была нажата

		if (keyCode == KeyEvent.KEYCODE_MENU) {


			/*выполняем нужные действия*/

		y=x++;//при каждом нажатии на аппаратную кнопку увеличиваем значение x на 1, и присваиваем это значение y

		z=y%2; //после чего, берем остаток от деления y на два, и присваиваем его z

//теперь наше z, будет иметь значение либо 0 либо 1.

			//и можно вводить иф

			if(z==1){  //если z равно единицы, то:

				t1.setText("значение z = "+z);//вместо этого можно программно создавать элементы альтернативного меню

			}
                                    else
	
                                t1.setText("значение z = "+z);//а затем их разрушать
//показываем, что обработали событие нажатия на клавишу, возвращая true

			return true;

		} 
		
return super.onKeyDown(keyCode, event);

	}
У меня всё вОркает :D

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 24 фев 2015, 22:44
Хомка Хомячок
Да что за ерунда. Метод removeAllViews(); после удаления элементов в одном из лайаутов, делает все остальное неактивным. В других лайаутах неактивно все.

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 01 мар 2015, 11:32
Ann1212
Увидела в уроке, что можно с помощью getChildCount() посчитать сколько кнопок создано. Я создала специальную кнопку Count, по нажатии на которую TextView должен измениться на количество созданных кнопок, но по нажатии приложение выключается :(
Подскажите, где моя ошибка?

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

public  class MainActivity extends Activity implements View.OnClickListener {

    LinearLayout llMain;
    RadioGroup rgGravity;
    EditText etName;
    Button btnCreate;
    Button btnClear;
    Button btnCount;
    TextView tvCount;


    int wrapContent = LinearLayout.LayoutParams.WRAP_CONTENT;


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

        llMain = (LinearLayout) findViewById(R.id.llMain);
        rgGravity = (RadioGroup) findViewById(R.id.rgGravity);
        etName = (EditText) findViewById(R.id.etName);
        tvCount =  (TextView) findViewById(R.id.tvCount);

        btnCreate = (Button) findViewById(R.id.btnCreate);
        btnCreate.setOnClickListener(this);

        btnClear = (Button) findViewById(R.id.btnClear);
        btnClear.setOnClickListener(this);

        btnCount = (Button) findViewById(R.id.btnCount);
        btnCount.setOnClickListener(this);


    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnCreate:
                // Создание LayoutParams c шириной и высотой по содержимому
                LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(
                        wrapContent, wrapContent);
                // переменная для хранения значения выравнивания
                // по умолчанию пусть будет LEFT
                int btnGravity = Gravity.LEFT;
                // определяем, какой RadioButton "чекнут" и
                // соответственно заполняем btnGravity
                switch (rgGravity.getCheckedRadioButtonId()) {
                    case R.id.rbLeft:
                        btnGravity = Gravity.LEFT;
                        break;
                    case R.id.rbCenter:
                        btnGravity = Gravity.CENTER_HORIZONTAL;
                        break;
                    case R.id.rbRight:
                        btnGravity = Gravity.RIGHT;
                        break;
                }
                // переносим полученное значение выравнивания в LayoutParams
                lParams.gravity = btnGravity;

                // создаем Button, пишем текст и добавляем в LinearLayout
                Button btnNew = new Button(this);
                btnNew.setText(etName.getText().toString());
                llMain.addView(btnNew, lParams);


                break;

            case R.id.btnCount:
                int c1;
                c1 = llMain.getChildCount();
                tvCount.setText(c1);
                break;

            case R.id.btnClear:
                llMain.removeAllViews();
                Toast.makeText(this, "Удалено", Toast.LENGTH_SHORT).show();
                break;


        }

    }

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 02 мар 2015, 08:37
klblk
Нужно читать документацию и понимать, что принимает на вход метод. В данном случае вы посылаете в него int, только он хочет int в виде id ресурса (например R.string.my_string), а не какое-то непонятное число c1.
Как исправить:
а) tvCount.setText(c1 + ""); //колхозный метод
б) tvCount.setText(String.valueOf(c1)); //более корректный метод

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 04 мар 2015, 14:25
Vladimir991
Здравствуйте! Проект делал в Android Studio.
Все работает замечательно, но только не стирает. Не работает метод removeAllViews. Натолкните на ошибку пожалуйста.
Вот код MainActivity.java

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

public class MainActivity extends Activity implements OnClickListener {

    LinearLayout llMain;
    RadioGroup rgGravity;
    EditText etName;
    Button btnCreate;
    Button btnClear;

    int wrapContent = LinearLayout.LayoutParams.WRAP_CONTENT;

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

        llMain = (LinearLayout) findViewById(R.id.llMain);
        rgGravity = (RadioGroup) findViewById(R.id.rgGravity);
        etName = (EditText) findViewById(R.id.etName);

        btnCreate = (Button) findViewById(R.id.btnCreate);
        btnCreate.setOnClickListener(this);

        btnClear = (Button) findViewById(R.id.bntClear);
        btnClear.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnCreate:
                // Создание LayoutParams с шириной и высотой по содержимому
                LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(
                        wrapContent, wrapContent
                );
                // переменная для хранения значения выравнивания
                // по умолчанию пусть будет Left
                int btnGravity = Gravity.LEFT;
                // определяем какой RadioButton чекнут и
                // соответственно заполняем btnGravity
                switch (rgGravity.getCheckedRadioButtonId()) {
                    case R.id.rbLeft:
                        btnGravity = Gravity.LEFT;
                        break;
                    case R.id.rbCenter:
                        btnGravity = Gravity.CENTER_HORIZONTAL;
                        break;
                    case R.id.rbRight:
                        btnGravity = Gravity.RIGHT;
                        break;
                }
                // переносим полученное значение выравнивания в LayoutParams
                lParams.gravity = btnGravity;

                // создаем Button, пишем текст и добавляем в LinearLayout
                Button btnNew = new Button(this);
                btnNew.setText(etName.getText().toString());
                llMain.addView(btnNew, lParams);

                break;
            case R.id.btnClear:
                llMain.removeAllViews();
                Toast.makeText(this, "Удалено", Toast.LENGTH_SHORT).show();
                break;
        }
    }

}
Вот код activity_main.xml

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

<?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">

    <RadioGroup
        android:id="@+id/rgGravity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/rbLeft"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="Left">

        </RadioButton>

        <RadioButton
            android:id="@+id/rbCenter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Center">


        </RadioButton>

        <RadioButton
            android:id="@+id/rbRight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Right">

        </RadioButton>

    </RadioGroup>

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

        <EditText
            android:id="@+id/etName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:fadeScrollbars="true">

        </EditText>

        <Button
            android:id="@+id/btnCreate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Create">

        </Button>

        <Button
            android:id="@+id/bntClear"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Clear">

        </Button>

    </LinearLayout>

    <LinearLayout
        android:id="@+id/llMain"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

    </LinearLayout>

</LinearLayout>

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 06 мар 2015, 22:50
Алемарика
Добрый вечер!

Наверное, я не по теме, но ближе темы не нашла.
Вопрос глупый, но зависла. У меня в EditText не вводятся русские буквы с клавиатуры. Меняю раскладку и все нормально начинает писать (на английском). А на русском ни в какую...

В activity_main.xml прописано:
<?xml version="1.0" encoding="utf-8"?>

Использую стандартный эмулятор, реальное устройство пока недоступно для проверки :(. Сможете подсказать в чем может быть проблема?

Заранее спасибо.

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 06 мар 2015, 23:27
Foenix
я уже не помню что я делала
попробуй загуглить
http://stackoverflow.com/questions/9208 ... -simulator
http://stackoverflow.com/questions/1894 ... d-emulator
там говорят, что нужно установить доп. клавиатуру как приложение.
Установка - перетаскивание файла apk на эмулятор.