我是android开发的初学者。我编写了我的应用程序,从webservice获取数据。 首先它可以工作,但是当我在我的应用程序中编辑并添加了一列数据时 它显示了一些像这样的例外 -
11-02 07:56:47.721: D/AndroidRuntime(686): Shutting down VM
11-02 07:56:47.721: W/dalvikvm(686): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
11-02 07:56:47.741: E/AndroidRuntime(686): FATAL EXCEPTION: main
11-02 07:56:47.741: E/AndroidRuntime(686): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.possampleproject/com.app.possampleproject.WelcomeActivity}: java.lang.NullPointerException
11-02 07:56:47.741: E/AndroidRuntime(686): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
11-02 07:56:47.741: E/AndroidRuntime(686): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
11-02 07:56:47.741: E/AndroidRuntime(686): at android.app.ActivityThread.access$600(ActivityThread.java:122)
11-02 07:56:47.741: E/AndroidRuntime(686): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
11-02 07:56:47.741: E/AndroidRuntime(686): at android.os.Handler.dispatchMessage(Handler.java:99)
11-02 07:56:47.741: E/AndroidRuntime(686): at android.os.Looper.loop(Looper.java:137)
11-02 07:56:47.741: E/AndroidRuntime(686): at android.app.ActivityThread.main(ActivityThread.java:4340)
11-02 07:56:47.741: E/AndroidRuntime(686): at java.lang.reflect.Method.invokeNative(Native Method)
11-02 07:56:47.741: E/AndroidRuntime(686): at java.lang.reflect.Method.invoke(Method.java:511)
11-02 07:56:47.741: E/AndroidRuntime(686): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-02 07:56:47.741: E/AndroidRuntime(686): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-02 07:56:47.741: E/AndroidRuntime(686): at dalvik.system.NativeStart.main(Native Method)
11-02 07:56:47.741: E/AndroidRuntime(686): Caused by: java.lang.NullPointerException
11-02 07:56:47.741: E/AndroidRuntime(686): at com.app.possampleproject.WelcomeActivity.onCreate(WelcomeActivity.java:30)
11-02 07:56:47.741: E/AndroidRuntime(686): at android.app.Activity.performCreate(Activity.java:4465)
11-02 07:56:47.741: E/AndroidRuntime(686): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
11-02 07:56:47.741: E/AndroidRuntime(686): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
11-02 07:56:47.741: E/AndroidRuntime(686): ... 11 more
我可以运行第一个意图但是当我转到下一个意图时它会给出错误
MainActivity.java (我可以运行的第一个意图)
package com.app.possampleproject;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
final String TAG = "boolean";
EditText username,password;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
username = (EditText)findViewById(R.id.username);
final String user = new String(username.getText().toString());
password = (EditText)findViewById(R.id.password);
final String pass = new String(password.getText().toString());
Button login = (Button)findViewById(R.id.button1);
final String trueuser = new String("myusername");
final String truepass = new String("mypassword");
login.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(username.getText().toString().equals(trueuser) && password.getText().toString().equals(truepass)){
Toast.makeText(MainActivity.this, "Login success", Toast.LENGTH_SHORT).show();
changepage();
}else{
Toast.makeText(MainActivity.this, "Wrong username or password !!", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void changepage(){
Intent i = new Intent(this,WelcomeActivity.class);
startActivity(i);
}
}
WelcomeActivity.java (第二个意图我无法运行并在此时收到错误)
package com.app.possampleproject;
import java.util.Calendar;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class WelcomeActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome_page);
// set status update label.
SharedPreferences prefs = getSharedPreferences("date", MODE_PRIVATE);
String dateText = prefs.getString("date", "");
TextView date = (TextView) findViewById(R.id.textupdate);
date.setText(dateText);
// button activity
Button sale_but = (Button) findViewById(R.id.sale);
Button request_but = (Button) findViewById(R.id.request);
Button update_but = (Button) findViewById(R.id.update);
sale_but.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
changepage();
}
});
request_but.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
changepageRequest();
}
});
update_but.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
setdate();
}
});
}
public void changepage() {
Intent i = new Intent(this, SaleActivity.class);
startActivity(i);
}
public void changepageRequest() {
Intent i = new Intent(this, RequestActivity.class);
startActivity(i);
}
public void setdate() {
Calendar c = Calendar.getInstance();
int seconds = c.get(Calendar.SECOND);
int min = c.get(Calendar.MINUTE);
int hour = c.get(Calendar.HOUR);
int day = c.get(Calendar.DATE);
int mouth = c.get(Calendar.MONTH);
int year = c.get(Calendar.YEAR);
SharedPreferences prefs = getSharedPreferences("date", MODE_PRIVATE);
Editor mEditor = prefs.edit();
mEditor.putString("date", day + "/" + mouth + "/" + year + " " + hour
+ ":" + min + ":" + seconds);
mEditor.commit();
TextView date = (TextView) findViewById(R.id.textupdate);
date.setText(day + "/" + mouth + "/" + year + " " + hour + ":" + min
+ ":" + seconds);
}
}
我在gve错误之前就此意图编辑的相同活动
package com.app.possampleproject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;
public class SaleActivity extends Activity {
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sale_page);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}
Button cancel_but = (Button) findViewById(R.id.cancel);
Button submit_but = (Button) findViewById(R.id.submit);
cancel_but.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
changeToWelcome();
}
});
final Button btn1 = (Button) findViewById(R.id.button1);
// Perform action on click
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
SearchData();
}
});
}
public void changeToWelcome() {
Intent i = new Intent(this, WelcomeActivity.class);
startActivity(i);
}
public void SearchData() {
// listView1
final ListView lisView1 = (ListView) findViewById(R.id.listView1);
// editText1
final EditText inputText = (EditText) findViewById(R.id.editText1);
String url = "http://lab.richma.net/getJSONR.php";
// Paste Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("txtKeyword", inputText.getText()
.toString()));
try {
JSONArray data = new JSONArray(getJSONUrl(url, params));
final ArrayList<HashMap<String, String>> MyArrList = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;
for (int i = 0; i < data.length(); i++) {
JSONObject c = data.getJSONObject(i);
map = new HashMap<String, String>();
map.put("ProductID", c.getString("ProductID"));
map.put("Size", c.getString("Size"));
map.put("Colour", c.getString("Colour"));
map.put("Price", c.getString("Price"));
map.put("Quantity", c.getString("Quantity"));
MyArrList.add(map);
}
// item list want to sale
SimpleAdapter sAdap;
sAdap = new SimpleAdapter(SaleActivity.this, MyArrList,
R.layout.activity_column, new String[] { "ProductID",
"Size", "Colour", "Price", "Quantity" }, new int[] {
R.id.ColProductID, R.id.ColSize, R.id.ColColour,
R.id.ColPrice, R.id.ColQuantity });
lisView1.setAdapter(sAdap);
final AlertDialog.Builder viewDetail = new AlertDialog.Builder(this);
// OnClick Item
lisView1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> myAdapter, View myView,
int position, long mylng) {
String strProductID = MyArrList.get(position)
.get("ProductID").toString();
String sSize = MyArrList.get(position).get("Size")
.toString();
String strColour = MyArrList.get(position).get("Colour")
.toString();
String strPrice = MyArrList.get(position).get("Price")
.toString();
String strQuantity = MyArrList.get(position)
.get("Quantity").toString();
viewDetail.setIcon(android.R.drawable.btn_star_big_on);
viewDetail.setTitle("Product Detail");
viewDetail.setMessage("ProductID : " + strProductID + "\n"
+ "Size : " + sSize + "\n"
+ "Colour : " + strColour + "\n"
+ "Price : " + strPrice + "\n"
+ "Quantity : " + strQuantity);
viewDetail.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
viewDetail.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
viewDetail.show();
}
});
// sale list retrieve
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String getJSONUrl(String url, List<NameValuePair> params) {
StringBuilder str = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
try {
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse response = client.execute(httpPost);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) { // Download OK
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
str.append(line);
}
} else {
Log.e("Log", "Failed to download file..");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return str.toString();
}
}
如果您想了解更多信息,请告诉我..非常感谢
已编辑:这是我的welcome_page.xml,感谢您的回答
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/wood">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="branch :"
android:textSize="20dp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="branch1"
android:textSize="20dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/sale"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="sale" />
<Button
android:id="@+id/request"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="request" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="update list"
android:textSize="20dp" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="300dp"
android:ems="10"
android:inputType="textMultiLine" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="update" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:text="Recently update" />
<TextView
android:id="@+id/textupdate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="27/10/55" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:1)
行
引起:java.lang.NullPointerException 在com.app.possampleproject.WelcomeActivity.onCreate(WelcomeActivity.java:30)
表示根本原因位于WelcomeActivity.java的第30行,您使用的变量为null。
可能findViewById(R.id.sale);
返回null,因为它无法找到按钮。你确定它存在且有ID吗?