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

FindViewByID возвращает Null - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Android Передача обмен данными между устройствами http://www.cyberforum.ru/android-dev/thread1127420.html
Здравствуйте! Каким образом реализовать передачу данных между двумя устройствами, если речь идет о простой игре со спрайт анимацией? В какую сторону копать? Что нужно передавать? В какой форме?...
Программирование Android Вкладки как в Play Market Здравствуйте! Не могу понять, как реализованы вкладки (tabs) в Google Play Market. Это не похоже не на TabHost, не на ActionBar.Tabs, не на PagerTabStrip (хотя кажется, что это измененный... http://www.cyberforum.ru/android-dev/thread1127274.html
Программирование Android Eclipse proguard public class android.support.v7.internal.widget.ActionBarView.HomeView
Добрый день. Сейчас изучаю разработку под андроид. Споткнулся на следующей ошибке This class should be public (android.support.v7.internal.widget.ActionBarView.HomeView) пробовал фиксить разными...
Программирование Android Перемещение иконки по клику
как переместить иконку по клику? package com.example.jjj; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import...
Программирование Android Загрузка 3D модели http://www.cyberforum.ru/android-dev/thread1126989.html
Нужно загрузить 3D модель или средствами Open GLES 2.0 или стандартными средствами Android.
Программирование Android ListView SubItem Всем привет! Расскажите пожалуйста как заполнять SubItem в виджете ListView. Мне нужно к обычному Item, который реализован вот так: private String lv_arr={ "Тема 1.", "Тема 2", "Тема... подробнее

Показать сообщение отдельно
Yevgenius
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 42
24.03.2014, 16:48  [ТС]
YuraAAA, Да, содержит.
Проверял даже в R файле. все прописано. Ну в принципе и должно быть прописано, т.к это просто новый проект по базовому темплейту, плюс одна кнопка, которая добавлена через визуальный редактор. То-есть полный автомат. Нигде вручную ничего не менял.

Добавлено через 7 минут
YuraAAA, Так, вроде нашел где собака зарыта.
Сейчас перепроверил, в общем есть 2 xml-а.
1 - activity_main
2 - fragment_main
Потому и 2 класса.
Притом именно fragment_main.xml содержит в себе и базовый layout и кнопку в нем.
Но в MainActivity.java этот fragment_main представлен через класс
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public static class PlaceholderFragment extends Fragment {
 
        public PlaceholderFragment() {
        }
 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container,
                    false);
            return rootView;
        }
    }
который сидит внутри класса MainAvtivity.

В общем в туториалах и уроках для чайников и hello world-ах такого построения я не видел. Наверное что-то изменилось в более поздних версиях.
Зачем этот PlaceholderFragment нужен и с чем его едят представляю чисто интуитивно, что он и содержит саму форму, обернутую в общий класс активитй. Но смысл?

Добавлено через 30 минут
Нет, все равно не работает.
Уже приписал все в этот PlaceholderFragment. При этом пришлось Button объявить как static (не знаю хорошо это или плохо)
Компиляция прошла. При запуске опять на том-же месте null и все тут..

Ну люди же как-то пишут hello world + кнопка
не может быть все так запутанно с самого начала?!

Может у кого есть пример кода, чтоб просто кнопка и подписка на ее onTouch? (на onClick подписаться получилось через xml без установки listener-а, а вот на остальные события видно listener-ы нужно вписывать через java)

Добавлено через 19 часов 28 минут
Наконец-то разобрался.
Если кому интересно, делюсь решением проблемы.
Итак, MainActivity Содержит в себе некий PlaceholderFragment, который имеет собственный XML, в котором и сидят все компоненты (кнопки, и т.д..)
Я создал переменную Button Button_1; в классе PlaceholderFragment, и затем в методе onCreateView смог найти его по ID и подключить к нему все что нужно было.

Еще, пришлось поставить минимальный API - 11. Иначе, предыдущие версии API не поддерживают класс Fragment

вот код:
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
package com.leibman.helloworld;
 
import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.Button;
 
public class MainActivity extends ActionBarActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
 
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
 
    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {
        Button Button_1;
        int Counter = 0;
        
        public PlaceholderFragment() {
        }
 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container,
                    false);
            
            Button_1 = (Button)rootView.findViewById(R.id.button1);
            Button_1.setText("Hello World");
            Button_1.setOnTouchListener(On_Touch_Listener);
            
            return rootView;    
        }
        
        OnTouchListener On_Touch_Listener = new OnTouchListener() {
            
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (v.getId() == R.id.button1)
                {
                    Button_1.setText(String.valueOf(Counter));
                    Counter++;
                }
                return false;
            }
        };
    }
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru