所以我对Android开发很新,我一直在以一种反复试验的方式处理所有事情。我的问题是:我有一个按钮,我想链接到将从特定网站开始下载的代码。我的代码如下。
public void Download(View Button) {
public void DownloadFromUrl(){
try {
URL url = new URL("www.generic-site.html");
HttpURLConnection c = (HttpURLConnection)
url.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
String Path = Environment.getExternalStorageDirectory()
+"/download/";
Log.v("PortfolioManger", "PATH: "+Path);
File file = new File(Path);
file.mkdirs();
FileOutputStream fos = new FileOutputStream("site.html");
InputStream is = c.getInputStream();
byte[] buffer = new byte[702];
int len1 = 0;
while ((len1 = is.read(buffer)) != -1) {
fos.write(buffer, 0, len1);
}
fos.close();
is.close();
} catch (IOException e) {
Log.d("PortfolioManger", "Error: "+e);
}
Log.v("PortfolioManger", "Check: ");
}
我试图做的是使用“public void Download(View Button)”命令启动下载,但是我得到错误:
Multiple markers at this line
- Syntax error, insert "EnumBody" to complete BlockStatements
- Syntax error on token "void", @ expected
- Syntax error, insert "enum Identifier" to complete
EnumHeaderName" error under "Public void DownloadFromUrl()
我知道这可能是一个愚蠢的问题,但任何人都可以解释一下吗?
答案 0 :(得分:5)
您不能将一个功能放在另一个功能
中 public void Download(View Button) {
public void DownloadFromUrl(){
答案 1 :(得分:4)
你真的需要整理你的Java语法,但是现在,这将有效,假设你输入了一个正确的URL(我无法测试你使用的是一个演示网址):
public class DownloadExampleActivity extends Activity {
/** Called when the activity is first created. */
Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.download_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DownloadFromUrl();
}
});
}
public void DownloadFromUrl() {
try {
URL url = new URL("www.generic-site.html");
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
String Path = Environment.getExternalStorageDirectory() + "/download/";
Log.v("PortfolioManger", "PATH: " + Path);
File file = new File(Path);
file.mkdirs();
FileOutputStream fos = new FileOutputStream("site.html");
InputStream is = c.getInputStream();
byte[] buffer = new byte[702];
int len1 = 0;
while ((len1 = is.read(buffer)) != -1) {
fos.write(buffer, 0, len1);
}
fos.close();
is.close();
} catch (IOException e) {
Log.d("PortfolioManger", "Error: " + e);
}
Log.v("PortfolioManger", "Check: ");
}
}
答案 2 :(得分:1)
@mibollma是对的,你实际上并不尊重java中的类结构。
java中的类文件 - 必须包含一个且仅包含一个公共类 - 此类的名称和文件名必须匹配
可以有其他类,但不是公共类或内部类,如
//in A.java
public class A
{
public class B
{}//inner class B
}//class A
class C
{}//class C
在课堂上,你可以使用 - 数据成员定义 - 内部类定义(见上文,所以是这个结构是递归/分形) - 方法
喜欢
public class A
{
//data member
int a = 0;
//other data member, static and private, why not
private static String b = "toto";
//methods
private void met( int b )
{}//met
//...
}//class A
这是大局。在一个方法中,除了指令之外你不能添加任何东西。不允许任何方法嵌套。请注意,这些示例不涉及匿名内部类,它更高级。
请花一些时间来审核java naming conventions,您的代码不遵守命名标准,更难以遵循。
此致 斯特凡
答案 3 :(得分:0)