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

FindViewByID возвращает Null - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Android Передача обмен данными между устройствами http://www.cyberforum.ru/android-dev/thread1127420.html
Здравствуйте! Каким образом реализовать передачу данных между двумя устройствами, если речь идет о простой игре со спрайт анимацией? В какую сторону копать? Что нужно передавать? В какой форме? ЗЫ: какую либу лучше использовать под Android для создания 3d. Я пока что остановился на min3D. Как будет осуществляться обмен данными в случае 3d приложения? Каким образом лучше планировать...
Android Вкладки как в Play Market Здравствуйте! Не могу понять, как реализованы вкладки (tabs) в Google Play Market. Это не похоже не на TabHost, не на ActionBar.Tabs, не на PagerTabStrip (хотя кажется, что это измененный TabStrip)... Как можно сделать такие вкладки? Вот скриншот, чтобы понятнее было: 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) пробовал фиксить разными способами proguard-project.txt, но эффекта 0. Может подскажете? Приложение чистое, дефолтное, которое создаётся при создании Android application project. правки вносились только на удаления всяких...
Android Перемещение иконки по клику
как переместить иконку по клику? package com.example.jjj; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.view.SurfaceHolder;
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", "Тема 3", "Тема 4", "Тема 5", "Тема 6", "Тема 7", подробнее

Показать сообщение отдельно
Yevgenius
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 42
24.03.2014, 16:48  [ТС]     FindViewByID возвращает Null
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;
            }
        };
    }
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru