classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.1'
当升级gradle没有办法解决问题时,同时升级butterknife10.2.1以上能解决问题。
Attempt to use @BindView for an already bound ID 0 解决办法问题library中使用butterknife,生成的资源id都是0x0解决办法1.升级Gradle 3.6.0以上(以4.2.1为例)在build.gradle文件修改classpath 'com.android.tools.build:gradle:4.2.1'在gradle-wrapper.properties文件修改distributionUrl=https\://ser
ISBN: 0471-21975-4
Wiley also publishes its books in a variety of electronic formats. Some content that appears
in print may not be available in electronic books.
Printed in the United States of America.
10 9 8 7 6 5 4 3 2 1
Introduction
Scenario
xxiii
Chapter 1
An Introduction to Python
Getting Started
Understanding Requirements
Determine Requirements of the University
Obtain Python and Its Documentation
Determine the System Requirements
Install Python
Start Python in Different Execution Modes
Summary
Chapter 2
Getting Started with Python
Getting Started
Writing Your First Python Program
Comments
Python as a Calculator
Using Variables in Python
Variables
Assigning Values to Variables
Standard Types
Identifiers and Keywords
Memory Management
Create a Sequence to Store All the Names of the Students
Write the Code to Display the Names of the Students
Contents
Declare a Dictionary of Student Purchases with the
Names of the Students as the Key
Write the Code to Display the Student Purchases
Save and Execute the Code
Verify the Details
Summary
Chapter 3
Intrinsic Operations and Input/Output
Getting Started
Using Input/Output Features and Intrinsic Operations
for Data Types in Python
Identify the Variables to Be Used
Accepting User Input
Formatting the Output
Introduction to Intrinsic Operations
Intrinsic Operations for Numeric Data Types
Intrinsic Operations for Strings
Intrinsic Operations for Lists and Tuples
Write the Code
Execute the Code
Summary
Chapter 4
Programming Basics
Getting Started
Conditional Operators
Order of Precedence of Operators
Using Programming Constructs
Identify the Control and Loop Statements to Be Used
Write the Code
Execute the Code
Summary
Chapter 5
Functions
Getting Started
Using Functions
Functions
Scope of Variables
Identify the Functions to Be Used
Write the Code
Execute the Code
Summary
Chapter 6
Modules
Getting Started
Using Modules
Modules
Packages
Identify the Modules to Be Used
Contents
Write the Code
Execute the Code
Summary
Chapter 7
Files
Getting Started
Using File Objects
Identify the Functions and Methods to Be Used
Write the Code to Store Course Details to the File
Execute the Code
Verify the Solution
Summary
Chapter 8
Object-Oriented Programming
Getting Started
Introducing OOP
Components of OOP
Benefits of OOP
Using Classes
Identify the Classes to Be Defined
Identifying the Class Objects
Identifying the Classes to Be Inherited and Their Objects
Identify the Methods to Be Overridden
Write the Code
Execute the Code
Summary
Chapter 9
Exception Handling
Getting Started
Handling Exceptions
Identify the Type of Error and Where the Error Occurs
Identify the Mechanism of Trapping the Exception
Identify the Location for the Code for Handling
the Exception to Be Written
Write the Code for Handling the Exception
Save and Execute the Code
Summary
Chapter 10
CGI Programming
Getting Started
Internet Basics
World Wide Web
Web Browsers
Hypertext Transfer Protocol (HTTP)
Revising HTML
Client-Side versus Server-Side Scripting
An Introduction to CGI
Contents
Writing CGI Applications
Write the Code for the HTMLForm to Accept Data
from the User
Write the CGI Program in Python to Generate the
Results Page
Write the CGI Program to Generate Both the Form and
Results Pages
Execute the Code
Summary
Chapter 11
Database Programming
Getting Started
Database Management
Introduction to MySQL
Working with MySQL
Accessing a Database from a Python Script
Identify the Elements of the Table That Stores
Registration Details
Identify the Steps for Connecting to the Database
Write the Code to Create a Table in the Database
Write the Code to Insert the Registration Details
into the Table Created
Execute the Code to Create the Table in the Database
Execute the Code to Insert Data into the Table
Verify the Data in the Database
Summary
Chapter 12
Network Programming
Getting Started
Client/Server Architecture
Network Programming
Using Sockets
Identify the Sockets to Be Used
Write the Code to Run on the IT Department Computer
Write the Code to Run on the Admission Office Computer
Execute the Code Created for the IT Department Computer
Execute the Code Created for the Admission
Office Computer
Verify that Data Has Been Saved to a File in the
IT Department Computer
Summary
Chapter 13
Multithreaded Programming
Getting Started
Single-Threaded Applications
Threading in Python
Contents
Creating Multithreaded Applications
Identify the Class and the Methods to Create
a Multithreaded Application
Write Code for the Server
Write the Code for the Client
Execute the Code Created for the Server
Execute the Code Created for the Client
Summary
Chapter14
Advanced Web Programming
Getting Started
Creating Web Servers
Accessing URLs
Creating Advanced CGI Applications
Identify the Elements of the Web Page for Entering
Assignment Details and Uploading the File
Identify the Methodology for Uploading the File
Identify the Methodology for Storing User Information
Write the Code for the CGI Script
Execute the CGI Script
Summary
Chapter 15
GUI Programming with Tkinter
Getting Started
Introduction to Tkinter
Creating a GUI Application
Identify the Components of the User Interface
Identify the Tkinter Widgets to Design the User Interface
Write the Code for the User Interface
Execute the Code
Summary
Appendix ADistributing COM Objects
Basics of COM
The Binary Standard
COM Interfaces
Binding
Python and COM
Creating COM Clients
Creating COM Servers
Index
Contents
In this competitive age, high productivity, tight deadlines, and short development
cycles are the buzzwords in the application development world. These are the reasons
why software developers prefer rapid application development (RAD) tools like
Python.
Python is a portable, interpreted, object-oriented programming language. It com-
bines remarkable power with very clear syntax. Moreover, its high-level built-in data
structures, combined with dynamic typing and dynamic binding, make it very attrac-
tive for rapid application development.
Python is being used successfully to glue together large software components. It
spans multiple platforms, middleware products, and application domains. Python has
been around since 1991, and it has a very active user community.
Python can fulfill an important integration role in the design of large applications with a
long life expectancy. It allows a fast response to changes in user requirements that require
adapting the higher-level application logic without changing the fundamental underlying
components. It also allows quick adaptation of the application to changes in the under-
lying components.
Guido van Rossum, CNRI
Python is an easy to learn, powerful programming language. It has efficient high-level
data structures and a simple but effective approach to object-oriented programming.
Python’s elegant syntax and dynamic typing, together with its interpreted nature, make
it an ideal language for scripting and rapid application development in many areas on
most platforms.
www.python.org
This book is an attempt to bridge the ever-increasing gap between the market
demand and the availability of Python expertise. The first step to becoming an expert
is acquiring an in-depth knowledge of Python, and that is exactly what this book has
to offer. It begins with the basics of scripting and seamlessly moves to programming
intricacies.
安卓模块化
Attempt to
use @
BindView for an already
bound ID 0
环境:
Android Gradle 版本 4.1.3
原因:
ViewBinding 与 ButterKnife 特性冲突
解决:Butterknife: 10.2.0–>10.2.1
是时候拥抱ViewBinding了!!一、前言二、初识ViewBinding三、拥抱ViewBinding3.1、环境要求3.2、开启ViewBinding功能3.3、Activity中ViewBinding的使用3.3.1、布局中直接的控件3.3.2、布局中导入的控件
沉舟侧畔千帆过,
病树前头万木春。
– 唐·刘禹锡
随着Android Studio 3.6的正式发布,我义无反...
随着
Android Studio 3.6的正式发布,我义无反顾的走在了更新尝鲜的前列。AS的升级一如往常的顺利,重启后就进入了令人血脉喷张的
Gradle 升级的环节,需要从3.5.1升级到3.6.0。果不其然,出问题了!!
ButterKnife居然报错,日志如下:
D:\xxx\libbase\compon...
1,如果老项目中使用kotlin,升级到最新版本后如果kotlin插件(项目的build.gradle)版本和老项目中的插件版本不一致会导致错误;
错误:A problem occurred evaluating project ':app'.
> Failed to apply plugin [id 'kotlin-android']
> Current version of Gradle Gradle
在Module:app build.gradle 中添加如下代码
dependencies {
implementation 'com.jakewharton:butterknife:10.1.0'
//作用:在编译时处理注解,生成辅助文件,提升应用性能
annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
ButterKnife GitHub链接 在GitHub中可以查看完成的源码,在项目中
KEITH A. MC NEIL AND BEEMAN N. PHILLIPS
Southern Illinois University The University of Tezas at Austin
N. H. Wittner
Director, Research and Development
Austin Independent School District
Austin, Texas 78752
Dear Mr. Wittner:
This lengthy letter is the best way that we can think of to thank you and your staff for supporting
our recent research
可以看下上一篇,哈哈。
步骤3 BindingClass bindingClass = targetClassMap.get(enclosingElement);
if (bindingClass != null) {
ViewBindings viewBindings = bindingClas