正在运行android应用程序获取java.lang.NullPointerException
我不知道发生了什么,我无法运行我的应用程序。它所做的是从API中获取一些信息数据并在listview中列出,我认为我的ClientActivity有问题,但我不知道是什么正在运行android应用程序获取java.lang.NullPointerException,java,android,json,android-intent,android-arrayadapter,Java,Android,Json,Android Intent,Android Arrayadapter,我不知道发生了什么,我无法运行我的应用程序。它所做的是从API中获取一些信息数据并在listview中列出,我认为我的ClientActivity有问题,但我不知道是什么 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android/com.android.MainActivity}: java.lang.NullPointerException at android.app.
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android/com.android.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2198)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257)
at android.app.ActivityThread.access$800(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
**Caused by: java.lang.NullPointerException
at com.android.MainActivity.onCreate(MainActivity.java:40)**
at android.app.Activity.performCreate(Activity.java:5248)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257)
at android.app.ActivityThread.access$800(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
主要活动:
public class MainActivity extends SherlockFragmentActivity {
private ViewPager mViewPager;
private TabsAdapter mTabsAdapter;
private ActionBar barra;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mViewPager = new ViewPager(this);
mViewPager.setId(R.id.pager);
setContentView(mViewPager);
mTabsAdapter = new TabsAdapter(this, mViewPager);
**mTabsAdapter.addTab(barra.newTab().setIcon(R.drawable.clientes).setText(" Clientes"), ClienteActivity.class, null);**
barra = getSupportActionBar();
barra.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
}
private static final int REFRESH = 1;
private static final int SEARCH = 2;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main, menu);
menu.add(0, REFRESH, 0, "Refresh")
.setIcon(R.drawable.ic_action_view_as_grid)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
menu.add(0, SEARCH, 0, "Search")
.setIcon(R.drawable.ic_action_search)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case REFRESH:
return true;
case SEARCH:
// Do search
return true;
case R.id.add_item:
this.dispatchSync();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void dispatchSync() {
SincronizarTask mSincronizarTask = new SincronizarTask(this);
mSincronizarTask.inicia();
}
}
客户活动:
public class ClienteActivity extends SherlockFragment {
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_cliente, container, false);
try {
ClienteViewAdapter ad = new ClienteViewAdapter(this.getActivity(), R.layout.fragment_cliente_item);
ListView lv = (ListView) view.findViewById(R.id.listaClientes);
lv.setVerticalFadingEdgeEnabled(true);
lv.setVerticalScrollBarEnabled(true);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TextView clienteId = (TextView) view.findViewById(R.id.clienteId);
TextView clienteNome = (TextView) view.findViewById(R.id.clienteNome);
TextView clienteTipoPessoa = (TextView) view.findViewById(R.id.clienteTipo);
Intent intent = new Intent(getActivity(), ContatosView.class);
//intent.putExtra("id_cliente", clienteId.getText()); // envia o id do cliente para a tela de detalhes
intent.putExtra("nome", clienteNome.getText());
intent.putExtra("tipo_pessoa", clienteTipoPessoa.getText());
startActivity(intent);
}
});
lv.setAdapter(ad);
} catch (Exception e) {
new AlertDialog.Builder(getActivity()).setTitle("Erro").setMessage(e.getMessage()).setNeutralButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
}).show();
}
return view;
}
private void gerarToast(CharSequence message) {
int duration = Toast.LENGTH_LONG;
Toast toast = Toast
.makeText(getActivity(), message, duration);
toast.show();
}
}
公共类客户活动扩展了SherlockFragment{
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.fragment\u客户,容器,假);
试一试{
ClientViewAdapter ad=新的ClientViewAdapter(this.getActivity(),R.layout.fragment\u cliente\u项);
ListView lv=(ListView)view.findViewById(R.id.listaClientes);
lv.setVerticalFadingEdgeEnabled(正确);
lv.setVerticalScrollBarEnabled(真);
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//TextView clientId=(TextView)view.findViewById(R.id.clientId);
TextView clienteNome=(TextView)view.findViewById(R.id.clienteNome);
TextView clienteTipoPessoa=(TextView)view.findViewById(R.id.clienteTipo);
Intent Intent=新的Intent(getActivity(),ContatosView.class);
//intent.putExtra(“id_cliente”,cliented.getText());//envia o id do cliente para a tela de detalhes
intent.putExtra(“nome”,clienteNome.getText());
intent.putExtra(“tipo_pessoa”,clienteTipoPessoa.getText());
星触觉(意向);
}
});
低压设置适配器(ad);
}捕获(例外e){
新建AlertDialog.Builder(getActivity()).setTitle(“Erro”).setMessage(e.getMessage()).setNeutralButton(“确定”,新建DialogInterface.OnClickListener()){
@凌驾
公共void onClick(DialogInterface,inti){
}
}).show();
}
返回视图;
}
私有void gerarToast(字符序列消息){
int duration=Toast.LENGTH\u LONG;
吐司
.makeText(getActivity(),消息,持续时间);
toast.show();
}
}
适配器:
public class ClienteViewAdapter extends ArrayAdapter<ClientesModel> {
private final LayoutInflater inflater;
private final int resourceId;
public ClienteViewAdapter(FragmentActivity context, int resource) {
super(context, resource);
this.inflater = LayoutInflater.from(context);
this.resourceId = resource;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
ClientesModel cliente = getItem(position);
view = inflater.inflate(resourceId, parent, false);
//TextView tvId = (TextView) view.findViewById(R.id.txtTitle);
TextView tvNome = (TextView) view.findViewById(R.id.clienteNome);
TextView tvTipo = (TextView) view.findViewById(R.id.clienteTipo);
//tvId.setText(String.valueOf(cliente.ge()));
tvNome.setText(cliente.getNome());
tvTipo.setText(cliente.getTipo_pessoa());
return view;
}
}
公共类ClientViewAdapter扩展了ArrayAdapter{
私人充气机;
私有最终int资源ID;
公共ClientViewAdapter(FragmentActivity上下文,int资源){
超级(上下文、资源);
this.inflater=layoutiner.from(上下文);
this.resourceId=资源;
}
@凌驾
公共视图getView(内部位置、视图视图、视图组父视图){
ClientsModel cliente=getItem(位置);
视图=充气器。充气(resourceId,父项,false);
//TextView tvId=(TextView)view.findViewById(R.id.txtTitle);
TextView tvNome=(TextView)view.findViewById(R.id.clienteNome);
TextView tvTipo=(TextView)view.findViewById(R.id.clienteTipo);
//setText(String.valueOf(cliente.ge());
tvNome.setText(client.getNome());
tvTipo.setText(client.getTipo_pessoa());
返回视图;
}
}
以及解析后的Json:
public class ClientRest {
private RequestQueue mRequestQueue;
private ArrayList<ClientesModel> arrNews ;
public ArrayList<ClientesContatosModel> arrContatos ;
private Activity context;
public ClientRest(Activity ctx) {
this.context = ctx;
}
public interface ClientesRestListener {
public void clientesReceived(List<ClientesModel> clientes);
}
public final void getClientes(final ClientesRestListener listener) {
String url = "http://192.168.1.1/api/api/client/index.php";
// filtros
final ProgressDialog pDialog = new ProgressDialog(this.context);
pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pDialog.setTitle("Sincronizando");
pDialog.setMessage("Aguarde...");
pDialog.show();
arrNews = new ArrayList<ClientesModel>();
arrContatos = new ArrayList<ClientesContatosModel>();
mRequestQueue = Volley.newRequestQueue(this.context);
JsonObjectRequest mJsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
List<ClientesModel> clientes = null;
try {
clientes = parseJSON(response);
pDialog.hide();
} catch (JSONException e) {
e.printStackTrace();
}
listener.clientesReceived(clientes);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (pDialog.isShowing()) {
pDialog.hide();
}
error.printStackTrace();
}
}
)
mRequestQueue.add(mJsonObjectRequest);
}
private List<ClientesModel> parseJSON(JSONObject json) throws JSONException {
try {
JSONArray dados = json.getJSONArray("dados");
for (int i = 0; i < dados.length(); i++) {
JSONObject item = dados.getJSONObject(i);
ClientesModel mClientesModel = new ClientesModel();
ClientesContatosModel mClientesContatoModel = new ClientesContatosModel();
/* cadastra os dados necessários no objeto no modelo */
mClientesModel.setId(item.optInt("id"));
mClientesModel.setNome(item.optString("nome"));
mClientesModel.setTipo_pessoa(item.optString("tipo_pessoa"));
mClientesModel.setInformacoes_adicionais(item.optString("informacoes_adicionais"));
mClientesModel.setCpf(item.optString("cpf"));
mClientesModel.setCnpj(item.optString("cnpj"));
JSONArray contatos = item.getJSONArray("contatos");
for (int j = 0; j < contatos.length(); j++) {
JSONObject data = contatos.getJSONObject(j);
mClientesContatoModel.setNome(data.optString("nome"));
mClientesContatoModel.setCargo(data.optString("cargo"));
}
arrNews.add(mClientesModel);
arrContatos.add(mClientesContatoModel);
}
} catch (Exception e) {
e.printStackTrace();
}
return arrNews;
}
}
公共类客户端列表{
私有请求队列mRequestQueue;
私人ArrayList arrNews;
公共ArrayList arrContatos;
私人活动语境;
公共客户端(活动ctx){
this.context=ctx;
}
公共接口客户端列表器{
收到的公共无效客户(列出客户);
}
public final void getclients(final clientsrestlistener侦听器){
字符串url=”http://192.168.1.1/api/api/client/index.php";
//过滤器
final ProgressDialog pDialog=新建ProgressDialog(this.context);
pDialog.setProgressStyle(ProgressDialog.STYLE_微调器);
pDialog.setTitle(“Sincronizando”);
pDialog.setMessage(“Aguarde…”);
pDialog.show();
arrNews=新的ArrayList();
arrContatos=newarraylist();
mRequestQueue=Volley.newRequestQueue(this.context);
JsonObjectRequest mJsonObjectRequest=新JsonObjectRequest(Request.Method.GET,url,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
列出客户=空;
试一试{
clientes=parseJSON(响应);
pDialog.hide();
}捕获(JSONException e){
e、 printStackTrace();
}
侦听器。客户已接收(客户);
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
if(pDialog.isShowing()){
pDialog.hide();
}
错误。printStackTrace();
}
}
)
mRequestQueue.add(mJsonObjectRequest);
}
私有列表parseJSON(JSONObject json)抛出JSONException{
试一试{
JSONArray dados=json.getJSONArray(“dados”);
对于(int i=0;iprivate ActionBar barra;
barra = getActionBar()
barra = getSupportActionBar()
**mTabsAdapter.addTab(barra.newTab().setIcon(R.drawable.clientes).setText(" Clientes"), ClienteActivity.class, null);**
barra = getSupportActionBar();
barra.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
barra = getSupportActionBar();
barra.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
**mTabsAdapter.addTab(barra.newTab().setIcon(R.drawable.clientes).setText(" Clientes"), ClienteActivity.class, null);**
mViewPager = new ViewPager(this);
mViewPager.setId(R.id.pager);
setContentView(mViewPager);
mTabsAdapter = new TabsAdapter(this, mViewPager);
**mTabsAdapter.addTab(barra.newTab().setIcon(R.drawable.clientes).setText(" Clientes"), ClienteActivity.class, null);**
barra = getSupportActionBar();
barra.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mViewPager = new ViewPager(this);
mViewPager.setId(R.id.pager);
setContentView(mViewPager);
barra = getSupportActionBar();
barra.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mTabsAdapter = new TabsAdapter(this, mViewPager);
**mTabsAdapter.addTab(barra.newTab().setIcon(R.drawable.clientes).setText(" Clientes"), ClienteActivity.class, null);**