首页 \ 问答 \ 非Java程序员进行Android开发的最快路径(Fastest path to Android development for a non-Java programmer)

非Java程序员进行Android开发的最快路径(Fastest path to Android development for a non-Java programmer)

决定加入Android的潮流已经做出决定。 已正确安装和配置整个开发环境。 我完成了http://developer.android.com/sdk/installing.html中建议的步骤,甚至设法“编写”Hello World应用程序并在模拟器上运行它。 :)

不幸的是,我不是一个经验丰富的Java程序员,因此,尽管已经成功完成了所有建议的步骤,并为C ++程序员提供了一个优秀的快速Java教程 ,但我觉得在掌握Android开发的过程中缺少很多东西。

首先掌握Java世界会很棒(注意:我没有说语言,因为Java不仅仅是语法),然后深入研究Android,但在现实世界中有最后期限可以满足并因此开始在Android上直接开发/学习非常诱人......

我的问题:是否有可能在跳过成为有经验的Java程序员的步骤的同时开发出优秀的Android代码?

你知道快速通道可以掌握两者吗?


The decision to jump on the Android bandwagon has been made. The entire development environment has been installed and configured properly. I went through the steps suggested in http://developer.android.com/sdk/installing.html and even managed to "write" the Hello World application and run it on the emulator. :)

Unfortunately, however, I am not an experienced Java programmer and so, despite successfully completing all the suggested steps, and consulting an excellent speedy Java tutorial for C++ programmers, I feel that a lot is missing on the way to mastering Android development.

It would have been great to first master the Java world (note: I didn't say language, as Java is so much more than just syntax), then delve into Android, but in the real world there are deadlines to meet and so starting to develop/learn directly on Android is very tempting...

My question: Is it possible to develop good Android code while skipping the step of being an experienced Java programmer?

Do you know of a fast track that allows mastering both?


原文:https://stackoverflow.com/questions/4390290
更新时间:2021-06-17 06:06

最满意答案

您不想调用topFrame.pack()m.add(topFrame) 。 您可以打包/放置/网格化窗口,也可以将其添加到窗格窗口,不要同时执行这两个操作。

此外,如果框架将在窗格窗口中,则它需要是窗格窗口的子窗口,而不是根窗口的子窗口。


You don't want to call topFrame.pack() and m.add(topFrame). You either pack/place/grid the window, or you add it to a paned window, you don't do both.

Also, if the frame is going to be in the paned window it needs to be a child of the paned window rather than a child of the root window.

相关问答

更多
  • 您忽略了对根窗口中的任何行或列赋予权重。 没有它,tkinter在调整窗口大小时不知道如何分配额外的空间。 def main(cls): ... root.grid_rowconfigure(0, weight=1) root.grid_columnconfigure(0, weight=1) 由于您只在根窗口中放置一个小部件,因此我建议您使用pack因为您可以在一行中完成所有操作。 self.pack(fill="both", expand=True) You are ...
  • 您可以创建一个函数来更新使用letter所有位置,然后在显示使用letter的框架时调用该函数。 class PageTwo(tk.Frame): def __init__(self, parent, controller): tk.Frame.__init__(self, parent) self.controller = controller # made this an instance variable since we will need ...
  • 简短回答 :您在按钮和工具栏框架之间看到的空间是因为您允许包含工具栏的行调整大小,而不是包含PanedWindow的行...要获得所需内容,请替换: self.root.rowconfigure(0, weight=1) 同 self.root.rowconfigure(1, weight=1) 其他评论 : 尽量避免使用通配符 。 在这种情况下,很难区分tk和ttk小部件 为了允许调整使用grid()对齐的小部件的大小,必须在小部件的父级而不是小部件本身上调用.rowconfigure(..., we ...
  • 我在我的一些朋友的电脑上试过了,他们没有这个问题,所以它似乎只是一个硬件特定的问题。 I tried it out on some of my friends computers and they didn't have this issue, so it appears that it was just a hardware specific problem.
  • lambda :controller.ShowF(StartPage)不调用该函数,它返回一个调用该函数的新函数。 你需要删除lambda : self.controller.ShowF(StartPage) 此外,您的代码需要保存对controller的引用: class LoginPage(tk.Frame): def __init__(self,parent,controller): self.controller = controller ... lamb ...
  • 您不想调用topFrame.pack()和m.add(topFrame) 。 您可以打包/放置/网格化窗口,也可以将其添加到窗格窗口,不要同时执行这两个操作。 此外,如果框架将在窗格窗口中,则它需要是窗格窗口的子窗口,而不是根窗口的子窗口。 You don't want to call topFrame.pack() and m.add(topFrame). You either pack/place/grid the window, or you add it to a paned window, you ...
  • 当您将窗口放在画布上时,您明确地给它一个高度和宽度。 因此,完全忽略了框架的实际宽度和高度。 因为框架几乎完全是画布的高度,所以无需滚动。 如果从create_window调用中删除width和height选项,则框架将可滚动。 When you put the window on the canvas you are explicitly giving it a height and a width. Because of that, the actual width and height of the ...
  • 如果您使用的是旧版本的cx_Freeze(<5.0),则它不支持Python35。 最新的开发版本支持Python35。 你可以通过安装它 pip install cx-Freeze-win 但是您需要在系统上安装VC ++运行时才能成功运行。 此外,我发现这个GitHub-repo带有用于Windows平台的cx_Freeze 5的预构建二进制包。 pip install wheel https://raw.githubusercontent.com/sekrause/cx_Freeze-Wheels/m ...
  • 在线 FRAME=Frame(W, width=100, height =50).place(x=700,y=0) 你认为你正在返回一个tk框架,但你不是! 你会得到place方法的返回值,即None 所以试试 frame = Frame(W, width=100, height=50) frame.place(x=700, y=0) label = Label(frame, text="test").pack() 如果你不希望框架缩小以适应标签,请使用( 如何停止缩小Tkinter Frame以适应其 ...
  • 我使用fill=Y选项打包self.frameLEFT以便两个列表框位于窗口的顶部(否则self.frameLEFT的高度将适合两个列表框, self.frameLEFT将在窗口中垂直居中)。 对于self.frameRIGHT我使用expand=True和fill=BOTH以便它填充窗口中的所有可用空间。 最后,对于条目e ,我使用fill=X以便它填充可用的水平空间。 from tkinter import * import os class TechnologyIDE: def __init_ ...

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)