б является объектом класса Button Someplaces использование view.findViewById является обязательнымВ чем разница между b = (Button) findViewById (R.id.mybutton); и b = (кнопка) view.findViewById (R.id.mybutton);
ответ
если вы пишете:
b=(Button) findViewById(R.id.mybutton);
это использовать непосредственно в макет
, но если вы пишете:
b= (Button) view.findViewById(R.id.mybutton);
этого использование для макета раздувания (пользовательский макет)
, например, в: Пользовательские Dialog
пользовательского макета для Listview, который распространяется на BaseAdapter, ArrayAdapter, .... и для подключения к Layoutinflater
if you declare button directly from your layout you write this:
b= (Button) findViewById(R.id.mybutton);
else if you inflate any layout to your activity you should write this:
View view;
LayoutInflater subCatHead = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = subCatHead.inflate(R.layout.sub_cat_headerlyt, null);
b= (Button) view.findViewById(R.id.mybutton);
В вашей деятельности, если вы объявите кнопку прямо написать это:
button = (Button) findViewById(R.id.mybutton);
В случае пользовательского адаптера еще если вы раздуваете какой-либо макет для своей деятельности, напишите это:
button = (Button) view.findViewById(R.id.mybutton);
В пользовательском массиве адаптере
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = inflater.inflate(R.layout.blog_stage_item, parent, false);
mStageListModel = null;
mStageListModel = (BlogStageDetailDTO) data.get(position);
TextView label = (TextView) row.findViewById(R.id.txt_spinner_item);
// Set values for spinner each row
label.setText(mStageListModel.getStage_name());
return row;
}
при использовании непосредственно активности Layout затем используйте
button = (Button) findViewById(R.id.mybutton);
и когда Использовать пользовательский макет как Base adapter, Arrayadapter, Fragment
вы должны пройти основной вид контейнера, как и называется
button = (Button) view.findViewById(R.id.mybutton);
findViewById
- это способ. Иногда вы можете ссылаться, как это:
b=(Button) findViewById(R.id.mybutton);
который является сокращением для этого:
b=(Button) this.findViewById(R.id.mybutton);
Среда IDE (Android Studio или любой другой) понимает, что findViewById
является метод, потому что она вызывается в объекте, имеет (или «реализует») этот метод. Однако это метод, который реализует множество объектов. Итак, если вы хотите «найти представление с помощью« R »id, иногда вы хотите найти его с другого объекта, кроме того, который выполняет вызов.
Например, Activity
реализует этот метод. Но если у вас есть в Activity
в View
(например, строки в списке), и вы хотите, чтобы извлечь значения из этой строки, вы могли бы сделать что-то вроде:
b=(Button) myRowView.findViewById(R.id.mybutton);
В этом случае myRowView
что-то на экране который должен иметь кнопку с идентификатором «mybutton».Если вы не сообщите IDE/компилятору проверить «строку» внутри Activity
, тогда предполагается, что вы пытаетесь найти представление, которое непосредственно определено в Activity
. Это может сработать, но если у вас есть 50 строк, и у всех из них есть кнопки с одинаковым идентификатором, вы, вероятно, не получите правильный ... но когда вы укажете , какую строку, указав объект, вы получите правильный.
Ключ здесь в том, что метод можно назвать без ключевого слова this
, и поэтому он временами выглядит «волшебным».
b = (кнопка) view.findViewById (R.id.mybutton); используется, когда вы используете компоновку надувателя или пытаетесь получить доступ к виджету во фрагменте, так как фрагмент не имеет прямой информации о представлении. Сначала нужно получить информацию о корневом представлении.
- 1. В чем разница между $ b и $$ b?
- 2. Разница между b = b ++ и b ++
- 3. В чем разница между View.findViewById() и Activity.findViewById()?
- 4. В чем разница между Object b(); и Object b ;?
- 5. В чем разница между a = a + b и a + = b?
- 6. В чем разница между * (a + b) и (* a + b)
- 7. В чем разница между // b и int (a/b)?
- 8. В чем разница между [:] = b и a = b [:]
- 9. В чем разница между «numpy.add (a, b)» и «a + b»?
- 10. В чем разница между b и c?
- 11. В чем разница между ['[a, a, a]', '[b, b, b]'] и [[a, a, a], [b, b, b]] в python?
- 12. Разница между a = b и b = a?
- 13. разница между view.findViewById (R.id ....) и просто findViewById (R.id ...)
- 14. Какая разница между a == b и (a & b) == b
- 15. Разница между a - = b и a = a - b в Python
- 16. разница между $ [a-b] и $ ((a-b)) в bash
- 17. разница между "класса А, класса B" и "класса A :: B"
- 18. Разница между B и b перед 8-битным двоичным номером
- 19. Perl speed: разница между $ a = $ a. $ B и $ a. = $ B
- 20. В чем разница между git fetch B + git merge B VS git merge origin/B
- 21. Разница между || a = b и a = a || b в рубине?
- 22. Разница между a + = b и a = a + b в Java
- 23. В чем разница между b '' и '' в python?
- 24. В чем разница между \ b и \>, \ <в regex?
- 25. В чем разница между a = b и a.Equals (b) в контексте значений и ссылочных типов?
- 26. В чем разница между a.b и $ b, пожалуйста?
- 27. В чем разница между A.prototype = B.prototype и A.prototype = new B()?
- 28. В чем разница между if (A), если (B) и если (A и B)?
- 29. Разница между $ a = & $ b, $ a = $ b и $ a = clone $ b в PHP OOP
- 30. Разница между a + b и a .__ add __ (b)
use view.findViewById (R.id.mybutton), где view - viewGroup, а R.id.mybutton - его дочерний элемент. –