【问题标题】:Calling method of one another activity from another activity从另一个活动调用另一个活动的方法
【发布时间】:2011-10-20 05:37:13
【问题描述】:

这里是代码sn-p,

class1.java

public class1 extends ListActivity {


   public class1(){}

   public testMethod()
   {
         Toast.makeText(getApplicationContext(),"Inside Method",Toast.LENGTH_SHORT).show();
   }

}

class2.java

public class2 extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

          class1 c = new class1();
          c.testMethod();

    }

}

我想从 class2 调用“testMethod”,目前出现以下错误,

08-04 22:59:27.428: ERROR/AndroidRuntime(1224): FATAL EXCEPTION: main
08-04 22:59:27.428: ERROR/AndroidRuntime(1224): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.assistant/com.assistant.AssistantActivity}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.assistant/com.assistant.addNew}: java.lang.NullPointerException

谢谢。

我有两个标签,

Tab1 扩展 Activity (class2.java) => 包含在 DB 中添加条目的表单

Tab2 扩展 ListActivity (class1.java) => 包含已添加条目的列表

每当通过 Tab1 添加任何条目时,我都想刷新 Tab2,并且我在 class2.java 中添加了方法来用更新的 DB 条目填充列表。

现在,我想在添加条目后从 class1.java 调用该方法。

【问题讨论】:

    标签: java android


    【解决方案1】:

    考虑将该方法设为静态方法。 虽然我不确定是否允许您实例化这样的 Activity,但您是否记得将它们都添加到 Android 清单中?

    也许getApplicationContext() 正在返回null

    【讨论】:

    • 是的,我尝试过使用静态方法,但是在方法中我必须使用一些实例属性,所以这种情况下不能使用静态方法。否则,这是一个很好的解决方案。谢谢。
    【解决方案2】:

    testMethod 需要返回类型(如 void):

    public void testMethod(){
       //your code
    }
    

    【讨论】:

    • 是的,我添加了 void 返回类型,但仍然出现同样的错误。
    【解决方案3】:

    得到解决方案,代码写在第二个标签的“onResume()”中,所以不需要调用方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多