- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试启动异步任务
但是当我运行应用程序时, Activity 崩溃了
我的任务:
private class HideTask extends AsyncTask<String, Void, String> {
protected void onPreExecute() {
//loader.show();
}
protected void onPostExecute(String result) {
//loader.dismiss();
}
@Override
protected String doInBackground(String... params) {
//hide();
return "done";
}
}
我怎么调用它:
HideTask task = new HideTask();
task.execute(new String[] { "" });
日志猫:
02-11 19:36:24.799: E/AndroidRuntime(17870): FATAL EXCEPTION: main 02-11 19:36:24.799: E/AndroidRuntime(17870): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{folder.hide.alexander.fuchs/folder.hide.alexander.fuchs.App}: java.lang.IllegalStateException: System services not available to Activities before onCreate() 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1573) 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.os.Handler.dispatchMessage(Handler.java:99) 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.os.Looper.loop(Looper.java:130) 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.app.ActivityThread.main(ActivityThread.java:3691) 02-11 19:36:24.799: E/AndroidRuntime(17870): at java.lang.reflect.Method.invokeNative(Native Method) 02-11 19:36:24.799: E/AndroidRuntime(17870): at java.lang.reflect.Method.invoke(Method.java:507) 02-11 19:36:24.799: E/AndroidRuntime(17870): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907) 02-11 19:36:24.799: E/AndroidRuntime(17870): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 02-11 19:36:24.799: E/AndroidRuntime(17870): at dalvik.system.NativeStart.main(Native Method) 02-11 19:36:24.799: E/AndroidRuntime(17870): Caused by: java.lang.IllegalStateException: System services not available to Activities before onCreate() 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.app.Activity.getSystemService(Activity.java:3562) 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.app.Dialog.(Dialog.java:141) 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.app.AlertDialog.(AlertDialog.java:63) 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.app.ProgressDialog.(ProgressDialog.java:80) 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.app.ProgressDialog.(ProgressDialog.java:76) 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.app.ProgressDialog.show(ProgressDialog.java:101) 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.app.ProgressDialog.show(ProgressDialog.java:90) 02-11 19:36:24.799: E/AndroidRuntime(17870): at folder.hide.alexander.fuchs.App.(App.java:58) 02-11 19:36:24.799: E/AndroidRuntime(17870): at java.lang.Class.newInstanceImpl(Native Method) 02-11 19:36:24.799: E/AndroidRuntime(17870): at java.lang.Class.newInstance(Class.java:1409) 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 02-11 19:36:24.799: E/AndroidRuntime(17870): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1565) 02-11 19:36:24.799: E/AndroidRuntime(17870): ... 11 more
public class App extends Activity implements OnClickListener {
private Button button;
private Button options;
private EditText edittext;
private TextView folder_to_hide;
Dialog progress;
String hide_or_show;
String password;
String pass;
String directory;
ProgressDialog loader = ProgressDialog.show(App.this, "",
"Loading. Please wait...", true);
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Button button;
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(this);
options = (Button) findViewById(R.id.button2);
options.setOnClickListener(this);
// EditText edittext
edittext = (EditText) findViewById(R.id.editText1);
//TextView folder_to_hide;
folder_to_hide = (TextView) findViewById(R.id.textView1);
init();
dialog();
rate();
}
private class HideTask extends AsyncTask<String, Void, String> {
protected void onPreExecute() {
//loader.show();
}
protected void onPostExecute(String result) {
//loader.dismiss();
}
@Override
protected String doInBackground(String... params) {
//hide();
return "done";
}
}
public void init() {
try
{
boolean exists2 = (new File("/data/data/folder.hide.alexander.fuchs/folder.db")).exists();
if (exists2) {
edittext.setText(deserializeString("/data/data/folder.hide.alexander.fuchs/folder.db"));
}
else {
edittext.setText("/sdcard/Hide");
createfolder("/sdcard/Hide");
}
boolean exists = (new File("/data/data/folder.hide.alexander.fuchs/hide.db")).exists();
if (exists) {
edittext.setVisibility(View.INVISIBLE);
folder_to_hide.setVisibility(View.INVISIBLE);
hide_or_show = "show";
button.setText("Show");
} else {
hide_or_show = "hide";
button.setText("Hide");
}
}
catch(Exception x)
{
}
}
public void createfolder(String path) {
try
{
new File(path).mkdirs();
}
catch(Exception x)
{
finish();
}
}
// Deletes all files and subdirectories under dir.
// Returns true if all deletions were successful.
// If a deletion fails, the method stops attempting to delete and returns false.
public static boolean deleteDir(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i=0; i<children.length; i++) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
}
}
// The directory is now empty so delete it
return dir.delete();
}
/**
public void copyDirectory(File sourceLocation , File targetLocation)
throws IOException {
if (sourceLocation.isDirectory()) {
if (!targetLocation.exists()) {
targetLocation.mkdir();
}
String[] children = sourceLocation.list();
for (int i=0; i<children.length; i++) {
copyDirectory(new File(sourceLocation, children[i]),
new File(targetLocation, children[i]));
}
} else {
InputStream in = new FileInputStream(sourceLocation);
OutputStream out = new FileOutputStream(targetLocation);
// Copy the bits from instream to outstream
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
}
**/
public static void copyFolder(File src, File dest)
throws IOException{
if(src.isDirectory()){
//if directory not exists, create it
if(!dest.exists()){
dest.mkdir();
System.out.println("Directory copied from "
+ src + " to " + dest);
}
//list all the directory contents
String files[] = src.list();
for (String file : files) {
//construct the src and dest file structure
File srcFile = new File(src, file);
File destFile = new File(dest, file);
//recursive copy
copyFolder(srcFile,destFile);
}
}else{
//if file, then copy it
//Use bytes stream to support all file types
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest);
byte[] buffer = new byte[1024];
int length;
//copy the file content in bytes
while ((length = in.read(buffer)) > 0){
out.write(buffer, 0, length);
}
in.close();
out.close();
System.out.println("File copied from " + src + " to " + dest);
}
}
@Override
public void onClick(View v) {
if (v == button)
{
try
{
directory = edittext.getText().toString();
FileWriter fstream = new FileWriter("/data/data/folder.hide.alexander.fuchs/folder.db");
BufferedWriter out = new BufferedWriter(fstream);
out.write(directory);
//Close the output stream
out.close();
if(hide_or_show == "hide")
{
HideTask task = new HideTask();
task.execute(new String[] { "http://www.vogella.de" });
edittext.setVisibility(View.INVISIBLE);
folder_to_hide.setVisibility(View.INVISIBLE);
}
else
{
show();
edittext.setVisibility(View.VISIBLE);
folder_to_hide.setVisibility(View.VISIBLE);
}
}
catch(Exception x)
{
String ErrorMessage = x.getMessage();
Toast.makeText(this,"Error"+ErrorMessage, Toast.LENGTH_LONG).show();
finish();
}
}
if (v == options)
{
final CharSequence[] items = {"Change password", "http://www.alexander-fuchs.net/", "Market"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Options");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if (items[item] == "Change password")
{
createpass();
}
if (items[item] == "http://www.alexander-fuchs.net/")
{
intentstarter(items[item].toString());
toaster(items[item].toString());
}
if (items[item] == "Market")
{
intentstarter("market://search?q=pub:Alexander Fuchs");
toaster("Please wait...");
}
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
public void hide() {
try
{
FileWriter fstream = new FileWriter("/data/data/folder.hide.alexander.fuchs/hide.db");
BufferedWriter out = new BufferedWriter(fstream);
out.write("hide");
//Close the output stream
out.close();
File copy = new File(directory);
File target = new File("/data/data/folder.hide.alexander.fuchs/Hide");
copyFolder(copy,target);
deleteDir(copy);
hide_or_show = "show";
button.setText("Show");
}
catch(Exception x)
{
edittext.setVisibility(View.VISIBLE);
folder_to_hide.setVisibility(View.VISIBLE);
File copy = new File("/data/data/folder.hide.alexander.fuchs/folder.db");
deleteDir(copy);
copy = new File("/data/data/folder.hide.alexander.fuchs/hide.db");
deleteDir(copy);
String ErrorMessage = x.getMessage();
Toast.makeText(this,"Error", Toast.LENGTH_LONG).show();
finish();
}
}
public void show() {
try
{
File delete = new File("/data/data/folder.hide.alexander.fuchs/hide.db");
deleteDir(delete);
File target = new File(directory);
File copy = new File("/data/data/folder.hide.alexander.fuchs/Hide");
copyFolder(copy,target);
deleteDir(copy);
hide_or_show = "hide";
button.setText("Hide");
}
catch(Exception x)
{
String ErrorMessage = x.getMessage();
Toast.makeText(this,"Error", Toast.LENGTH_LONG).show();
finish();
}
}
public void dialog() {
//set up dialog
final Dialog dialog = new Dialog(App.this);
dialog.setContentView(R.layout.dialoglayout);
dialog.setTitle("Password");
dialog.setCancelable(false);
//there are a lot of settings, for dialog, check them all out!
//set up text
final EditText text = (EditText) dialog.findViewById(R.id.editText1);
text.setText("");
//set up button
Button button = (Button) dialog.findViewById(R.id.Button01);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
password = text.getText().toString();
try
{
pass = deserializeString("/data/data/folder.hide.alexander.fuchs/password.db");
}
catch(Exception x)
{
String ErrorMessage = x.getMessage();
toaster("Error");
finish();
}
if(password.equals(pass))
{
dialog.dismiss();
}
else
{
toaster("Invalid Password");
finish();
}
}
});
//now that the dialog is set up, it's time to show it
boolean exists = (new File("/data/data/folder.hide.alexander.fuchs/password.db")).exists();
if (exists) {
dialog.show();
}
else
{
createpass();
}
}
public static String deserializeString(String file)
throws IOException {
int len;
char[] chr = new char[4096];
final StringBuffer buffer = new StringBuffer();
final FileReader reader = new FileReader(file);
try {
while ((len = reader.read(chr)) > 0) {
buffer.append(chr, 0, len);
}
} finally {
reader.close();
}
return buffer.toString();
}
public void toaster(String text) {
Toast.makeText(this,text, Toast.LENGTH_LONG).show();
}
public void intentstarter(String string) {
String url = string;
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
public void dialogbuilder(String text) {
new AlertDialog.Builder(this).setMessage(
text).setNeutralButton(
"OK",
null).show();
}
public void createpass() {
//set up dialog
final Dialog dialog = new Dialog(App.this);
dialog.setContentView(R.layout.createpass);
dialog.setTitle("Set Password");
dialog.setCancelable(false);
//there are a lot of settings, for dialog, check them all out!
//set up text
final EditText text = (EditText) dialog.findViewById(R.id.editText1);
text.setText("");
//set up text
final EditText text2 = (EditText) dialog.findViewById(R.id.editText2);
text2.setText("");
//set up button
Button button = (Button) dialog.findViewById(R.id.Button01);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String createpass_password = text.getText().toString().trim();
String createpass_password2 = text2.getText().toString().trim();
try
{
if(createpass_password.equals(createpass_password2))
{
FileWriter fstream = new FileWriter("/data/data/folder.hide.alexander.fuchs/password.db");
BufferedWriter out = new BufferedWriter(fstream);
out.write(createpass_password);
//Close the output stream
out.close();
dialog.dismiss();
dialogbuilder("Please notice that if you forget your password there is no availability to restore your data !");
}
else
{
toaster("Passwords are not matching !");
text.setText("");
text2.setText("");
}
}
catch(Exception x)
{
String ErrorMessage = x.getMessage();
toaster("Error");
finish();
}
}
});
//now that the dialog is set up, it's time to show it
dialog.show();
}
public void rate() {
//set up dialog
final Dialog dialog = new Dialog(App.this);
dialog.setContentView(R.layout.vote);
dialog.setTitle("Like this App ?");
dialog.setCancelable(true);
//there are a lot of settings, for dialog, check them all out!
//Rate
Button button = (Button) dialog.findViewById(R.id.button1);
//Later
Button button2 = (Button) dialog.findViewById(R.id.button2);
//No Thanks
Button button3 = (Button) dialog.findViewById(R.id.button3);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try
{
// /data/data/folder.hide.alexander.fuchs/rate.db
FileWriter fstream = new FileWriter("/data/data/folder.hide.alexander.fuchs/rate.db");
BufferedWriter out = new BufferedWriter(fstream);
out.write("no");
//Close the output stream
out.close();
dialog.dismiss();
}
catch (Exception x)
{
}
intentstarter("market://details?id=folder.hide.alexander.fuchs");
toaster("Please wait...");
dialog.dismiss();
}
});
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// /data/data/folder.hide.alexander.fuchs/rate.db
File dta = new File("/data/data/folder.hide.alexander.fuchs/rate.db");
deleteDir(dta);
dialog.dismiss();
}
});
button3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try
{
// /data/data/folder.hide.alexander.fuchs/rate.db
FileWriter fstream = new FileWriter("/data/data/folder.hide.alexander.fuchs/rate.db");
BufferedWriter out = new BufferedWriter(fstream);
out.write("no");
//Close the output stream
out.close();
dialog.dismiss();
}
catch (Exception x)
{
}
}
});
if (rate.rate() == 3)
{
dialog.show();
}
}
}
最佳答案
你唯一要做的就是:
new HideTask().execute();
您没有带参数的构造函数,因此无法像这样在其中传递字符串数组。
当您发布有关应用程序崩溃的 Android 问题时,发布 LogCat 始终是一个好主意:)
关于java - 让 Asynctask 开始工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9242755/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!