Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android java.lang.RuntimeException:无法使用TextView启动活动组件信息_Android - Fatal编程技术网

Android java.lang.RuntimeException:无法使用TextView启动活动组件信息

Android java.lang.RuntimeException:无法使用TextView启动活动组件信息,android,Android,我正在制作一个文件IO项目,我的组件视图有问题。我知道它与我的文本视图有关,但我是一个新手,无法理解它。代码如下: package com.IPR2.viewlog; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class Main extends Activity { public TextView tv; /** Calle

我正在制作一个文件IO项目,我的组件视图有问题。我知道它与我的文本视图有关,但我是一个新手,无法理解它。代码如下:

package com.IPR2.viewlog;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;



public class Main extends Activity {
    public TextView tv;

    /** Called when the activity is first created. */


    @Override
    public void onCreate(Bundle savedInstanceState) {
        FileOperations fileOperations = new FileOperations();
        Testing testing = new Testing();
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv = (TextView) findViewById(R.id.TextView01);
        testing.checkExternalMedia();
        //fileOperations.CreateFile("example.txt");



    }



}
以下是它的日志:

    02-13 19:54:47.199: W/dalvikvm(1533): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-13 19:54:47.209: E/AndroidRuntime(1533): FATAL EXCEPTION: main
02-13 19:54:47.209: E/AndroidRuntime(1533):  {com.IPR2.viewlog/com.IPR2.viewlog.ViewLog}: java.lang.NullPointerException
02-13 19:54:47.209: E/AndroidRuntime(1533):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
02-13 19:54:47.209: E/AndroidRuntime(1533):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
02-13 19:54:47.209: E/AndroidRuntime(1533):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
02-13 19:54:47.209: E/AndroidRuntime(1533):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
02-13 19:54:47.209: E/AndroidRuntime(1533):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-13 19:54:47.209: E/AndroidRuntime(1533):     at android.os.Looper.loop(Looper.java:130)
02-13 19:54:47.209: E/AndroidRuntime(1533):     at android.app.ActivityThread.main(ActivityThread.java:3683)
02-13 19:54:47.209: E/AndroidRuntime(1533):     at java.lang.reflect.Method.invokeNative(Native Method)
02-13 19:54:47.209: E/AndroidRuntime(1533):     at java.lang.reflect.Method.invoke(Method.java:507)
02-13 19:54:47.209: E/AndroidRuntime(1533):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-13 19:54:47.209: E/AndroidRuntime(1533):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-13 19:54:47.209: E/AndroidRuntime(1533):     at dalvik.system.NativeStart.main(Native Method)
02-13 19:54:47.209: E/AndroidRuntime(1533): Caused by: java.lang.NullPointerException
02-13 19:54:47.209: E/AndroidRuntime(1533):     at com.IPR2.viewlog.Testing.checkExternalMedia(Testing.java:43)
02-13 19:54:47.209: E/AndroidRuntime(1533):     at com.IPR2.viewlog.ViewLog.onCreate(ViewLog.java:31)
02-13 19:54:47.209: E/AndroidRuntime(1533):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-13 19:54:47.209: E/AndroidRuntime(1533):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
02-13 19:54:47.209: E/AndroidRuntime(1533):     ... 11 more
我正在使用另一个类并调用tv.append(“文件未保存!”)作为调试。如果我把它注释掉,问题就消失了。我想我处理得不对,我知道它应该很容易修复。我知道我可以使用其他方式进行调试,但我想学习如何以这种方式进行调试,因为我不希望再次出现此错误:]

package com.IPR2.viewlog;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

import android.os.Environment;
import android.widget.Toast;

public class FileOperations extends Main{



        public void CreateFile(String fileName)
        {
        try {
            File root = new File(Environment.getExternalStorageDirectory(),
                    "Nullwall");
            if (!root.exists()) {
                root.mkdirs();
            }
            tv.append("\nLog File Created In Directory: " + root);
            File gpxfile = new File(root, fileName);
            FileWriter writer = new FileWriter(gpxfile, true);
            writer.write("");
            writer.flush();
            writer.close();
            Toast.makeText(this, fileName + " Log Successfully Created!",
                    Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            tv.append(" \n File not Saved! CreateLogFile() Broken!");
        }
    }
我不知道这个代码是否有效。但应该是这样。现在我来解释一下。 如果您创建一个TextView对象tv,那么您应该从同一个类中引用它(或者您可以生成一个方法来访问它)

其次,您应该改进您的体系结构。如果有一个名为FileOperations的类,那么我希望看到可以处理文件的方法和字段。FileOperations不是更新UI的合适位置

第三,如果只有一个方法,为什么要为它创建一个单独的类


代码中的问题是无法从派生类访问tv。

我认为设计中确实存在一些不好的地方,为什么文件操作要扩展Main?就像我说的,新手!我想让电视正常工作。你有什么建议吗?我一直在努力学习。类文件操作有很多不同的方法;我举出一个例子来说明这个问题。我有好几节课,都有电视。我知道如果我想要一个单独的类,这个答案也应该有效,但是由于我在另外4个类中有大约20个其他方法,所以我想要一种方法:''
1。使用tv.append,如上所示的其他类。如果这不能做到或不应该做到,你能提供一个如何以类似的方式抛出错误的例子吗?谢谢大家!您无法访问您的文本视图。例如,如果要分离类,可以获取要作为返回语句追加的文本。但是不要扩展主类-它会把你的项目搞得一团糟。好吧!我怎样才能添加一些简单的东西,说“这是坏的,修复它!”这很容易,并且会出现在程序中?我现在使用的是Log.d(“Class_where_logs_events”,“Message about Log”);它起作用了。谢谢你的帮助。我也停止扩展我的main。现在我发现你使用它只是为了调试。)这改变了情况。对不起,我一开始不明白你的问题)
package com.IPR2.viewlog;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;



public class Main extends Activity {
    public TextView tv;

    /** Called when the activity is first created. */


    @Override
    public void onCreate(Bundle savedInstanceState) {
        FileOperations fileOperations = new FileOperations();
        Testing testing = new Testing();
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv = (TextView) findViewById(R.id.TextView01);
        //testing.checkExternalMedia();
        createFile("example.txt");
    }


    public void createFile(String fileName)
    {
        try {
            File root = new File(Environment.getExternalStorageDirectory(),
                    "Nullwall");
            if (!root.exists()) {
                root.mkdirs();
            }
            tv.append("\nLog File Created In Directory: " + root);
            File gpxfile = new File(root, fileName);
            FileWriter writer = new FileWriter(gpxfile, true);
            writer.write("");
            writer.flush();
            writer.close();
            Toast.makeText(this, fileName + " Log Successfully Created!",
                    Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            tv.append(" \n File not Saved! CreateLogFile() Broken!");
        }
}