getapplicationContext()上的Java.lang.NullPointerException
当我尝试实例化一个类时,我得到了NPE,我已经尝试使用类的名称。这个,getApplicationContext(),getApplication()。这些都不起作用,下面是日志:getapplicationContext()上的Java.lang.NullPointerException,java,android,android-activity,nullpointerexception,android-context,Java,Android,Android Activity,Nullpointerexception,Android Context,当我尝试实例化一个类时,我得到了NPE,我已经尝试使用类的名称。这个,getApplicationContext(),getApplication()。这些都不起作用,下面是日志: java.lang.NullPointerException at br.com.FragmentClientes.<init>(FragmentClientes.java:87) 不要创建参数化的活动构造函数 只需在活动中初始化数据回调方法,如onCreate(),onResume() 使用意图开始
java.lang.NullPointerException
at br.com.FragmentClientes.<init>(FragmentClientes.java:87)
不要创建参数化的
活动
构造函数
只需在活动中初始化数据
回调方法,如onCreate()
,onResume()
使用意图开始您的活动
有关更多信息,请阅读活动文档不要创建参数化的活动
构造函数
只需在活动中初始化数据
回调方法,如onCreate()
,onResume()
使用意图开始您的活动
欲了解更多信息,请阅读活动文档。片段客户是一项活动。您不应该定义自定义constructor,因为方法onCreate
的行为就像构造函数一样,系统会自动调用它
因此,将代码放入onCreate
方法中
重要提示:你永远不应该,我的意思是绝对不应该给新的零碎客户打电话(1)代码>细分客户是一项活动。您不应该定义自定义constructor,因为方法onCreate
的行为就像构造函数一样,系统会自动调用它
因此,将代码放入onCreate
方法中
重要提示:你永远不应该,我的意思是绝对不应该给新的零碎客户打电话(1)代码>不要在其构造函数中使用活动上下文,它现在可以工作了。请将构造函数中的所有代码放入一个方法中,并在`onCreate方法中调用它,如下所示:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO Auto-generated method stub
setContentView(R.layout.fragment_cliente);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
SecurePreferences mSessao = new SecurePreferences(FragmentClientes.this, "sessao");
mSessao.put("menuAtual", "Clientes");
Integer idViagem = getIntent().getIntExtra(TAG, -1);
init(idViagem);
}
public void init(Integer mId) {
clientes = new ArrayList<ClienteModel>();
try {
mRepositorio = new Repositorio(FragmentClientes.this);
List lista = mRepositorio.getClientesViagem(mId);
clientes = lista;
ad = new ClientViewAdapter(FragmentClientes.this, this, clientes);
lv.setVerticalFadingEdgeEnabled(true);
lv.setVerticalScrollBarEnabled(true);
lv.setAdapter(ad);
} catch (Exception e) {
e.printStackTrace();
}
}
不要在其构造函数中使用活动上下文,它现在可以工作了。请将构造函数中的所有代码放入一个方法中,并在`onCreate方法中调用它,如下所示:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO Auto-generated method stub
setContentView(R.layout.fragment_cliente);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
SecurePreferences mSessao = new SecurePreferences(FragmentClientes.this, "sessao");
mSessao.put("menuAtual", "Clientes");
Integer idViagem = getIntent().getIntExtra(TAG, -1);
init(idViagem);
}
public void init(Integer mId) {
clientes = new ArrayList<ClienteModel>();
try {
mRepositorio = new Repositorio(FragmentClientes.this);
List lista = mRepositorio.getClientesViagem(mId);
clientes = lista;
ad = new ClientViewAdapter(FragmentClientes.this, this, clientes);
lv.setVerticalFadingEdgeEnabled(true);
lv.setVerticalScrollBarEnabled(true);
lv.setAdapter(ad);
} catch (Exception e) {
e.printStackTrace();
}
}
这可能是因为您的ListView没有正确实例化
private ListView lv;
您从未为对象指定任何实例化(在您提供的代码中)。这可能是因为您的ListView没有正确实例化
private ListView lv;
您从不为对象指定任何实例化(在您提供的代码中)。使用SecurePreferences mSessao=new SecurePreferences(FragmentClients.this,“sessao”)@阿姆鲁比德里试过了,但还是得到了同样的结果error@Stacktwo您将在下面我的答案中找到完整的解决方案。使用SecurePreferences mSessao=新的SecurePreferences(FragmentClients.this,“sessao”)@阿姆鲁比德里试过了,但还是得到了同样的结果error@Stacktwo您将在下面的答案中找到完整的解决方案。我需要在FragmentClients类中传递一个Id参数,如果不创建构造函数,如何才能做到这一点?请参阅我的答案。@Stacktwo我了解您的问题。您应该使用Intent extras在活动之间传递参数:在活动之间传递数据的另一种方法是使用LocalBroadcast。我需要在FragmentClients类中传递Id参数,如果不创建构造函数,我如何才能做到这一点?请参阅我的答案。@Stacktwo我看到了您的问题。您应该使用Intent extras在活动之间传递参数:活动之间传递数据的另一种方式是使用LocalBroadcast。我已经更新了问题,仍然得到相同的错误,但是您的行(87)不应该抛出NullPointerException。你确定是这一行而不是下一行吗?我已经更新了问题,仍然得到相同的错误,但是你的行(87)不应该抛出NullPointerException。你确定是这一行而不是下一行吗?