【问题标题】:Start Activity From Seprate Java Class从单独的 Java 类启动 Activity
【发布时间】:2017-07-21 17:17:55
【问题描述】:

我正在尝试从单独的 java 类启动 Activity,但它失败了。 我不知道这段代码有什么错误。 我还发现了异常Here is the Exception I catch。我也无法理解这个异常。

public class ConnectorForLocateIndividual{
String id;
Context c;
public ConnectorForLocateIndividual(){}
public ConnectorForLocateIndividual(String id) {
    this.id = id;
}
public ConnectorForLocateIndividual(Context context){
    c = context;
}

public String getId() {
    return id;
}
public void startAc(){
    try {
        Intent i = new Intent(c, sign_in.class);
        c.startActivity(i);
    }catch (Exception e)
    {
        Toast.makeText(c , e.getMessage() , Toast.LENGTH_LONG).show();
    }

}

}

【问题讨论】:

  • 不需要的构造函数就像不需要的税,Activities 有自己的上下文
  • 你是什么意思兄弟??
  • Activities 有自己的 context 所以 c.startActivity(i); 应该是 startActivity(i); ,不需要创建构造函数
  • 我知道兄弟,但它是一个扩展 Activity 的单独 java 类。我只是写“扩展 Activity”用于测试目的,但它不起作用
  • 我会回答这个问题,但我需要更多信息...1。我需要 sign_in.class 的代码 - 它必须是一项活动。 2. 另外,ConnectorForLocateIndividual 会被其他活动扩展吗?因为我没有看到任何活动生命周期方法。 3. 两个活动都必须在 android 清单中 - 是吗?

标签: android android-layout android-activity


【解决方案1】:

您可能正在初始化 ConnectorForLocateIndividual 类中的上下文 c。这就是为什么你在尝试使用它时得到空指针的原因。确保你使用:

public ConnectorForLocateIndividual(Context context){
c = context;
}

在创建 ConnectorForLocateIndividual 类的新对象时这个特定的构造函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    相关资源
    最近更新 更多