android - 新 Activity 空指针异常

标签 android class android-activity nullpointerexception android-context

我有一个初学者问题。这是我的情况:

我想从主要 Activity 开始一个新 Activity 。启动新 Activity 的代码位于单独的类文件中。我似乎传递了错误的参数,并且在尝试启动新 Activity 时我最终陷入了空指针异常。当我将代码放在主 Activity 类文件中时,新 Activity 启动正常,因此第二个 Activity 和 list 都很好。这是我的代码示例:

在我实例化第二节课的主要 Activity 课中(这是我的主要 Activity 。我省略了其余部分,因为我认为它与问题无关):

Tester mytest = new Tester();
mytest.test(this);

在我的第二个类文件中(这不是一个 Activity ;它是一个在 Activity 中实例化的类):

public class Tester extends Activity {
     Intent myIntent;
     public void test (Context context) {
               myIntent = new Intent (Intent.ACTION_VIEW);
               myIntent.setClass(context, newActivity.class);
               thebutton.setOnClickListener(
            new OnClickListener() {  
                public void onClick(View v) { 
                    startActivity(myIntent);
                }  
            }       
        ):}

当我执行点击时,我在 startactivity 收到一个 nullpointerexception。任何人都可以启发我吗?我确信我错误地使用了上下文。

最佳答案

Activity 以Intents开始.请阅读Android Application Fundamentals首先尝试 Hello World 应用 :)

我知道您将不惜一切代价使用单独的测试器类;)所以我正在努力适应并帮助您。

首先,不要让你的类继承自Activity。这对你没有帮助,因为这个调用可能没有任何有效的上下文。 Activity 以某种方式实现了模板模式,为您提供关键方法,如onCreate(...)onPause(...) 等并被实例化由 Android 操作系统。

如果你还想使用类,你必须传入上下文。无论如何,您的目标可能是某种 MVC/MVP 模式结构。

public class Tester {
    private Context context;
    public Tester(Context context){
        this.context = context;
    }

    public void test () {
       final Intent myIntent = new Intent(context, NewActivity.class);

       //guess this comes from somewhere, hope through a findViewById method
       thebutton.setOnClickListener(
              new OnClickListener() {  
                public void onClick(View v) { 
                    context.startActivity(myIntent);
                }  
              }       
        )};
    }
}

这将是我这边提出的解决方案。我仍然在这里看到的一个问题是关于如何在 test() 方法中检索按钮。为了让它正常工作,您必须从某些 View 类(使用 view.findViewByid(R.id.myButton))检索它,或者动态创建它并在 onCreate(...) 您的 Activity(可能使用 Inflater)。

关于android - 新 Activity 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3636243/

相关文章:

android - 从 Android 上的 Qt 应用程序通过(显式) Intent 调用外部 Activity - putExtra 不起作用

java - android: 从 java 问题调用 javascript

android - 适用于 Android 的 Visual Studio 模拟器无法正常工作

python - pandas.DataFrame 子类的属性在 pickle 后消失

Python - 一个对象可以是它自己的类型吗?

android - 使用按钮启动 Activity Android

Android:在 Activity 屏幕方向更新期间保持 MediaPlayer 运行

android - SimpleArrayMap 和 ArrayMap 是为了保持顺序吗?

android - 如何播放存储在在线文件服务器上的视频?

python - 如何编写一个高效的__dict__重载函数?