我正在尝试开发一个非常简单的apk。
我正在使用一个 textView 来显示我在之前的活动中输入的两个团队的名称(这里是为了打开这个活动而带来的)。当我尝试使用 setText 显示这些团队的名称时,apk 崩溃了。
这是崩溃的类:
public class MatchPage extends Activity {
private String locali= null;
private String ospiti= null;
private TextView localiTV;
private TextView ospitiTV;
private MatchRugby partita;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.match);
localiTV =(TextView) findViewById(R.id.localiTV);
ospitiTV =(TextView) findViewById(R.id.ospitiTV);
getLocali();
getOspiti();
createMatch();
localiTV.setText("Locali /n"+ partita.teamA.getName());
ospitiTV.setText("Ospiti /n"+ partita.teamB.getName());
}
/**
* Prende il nome della squadra locale dall'intent
* @return
*/
public String getLocali(){
Intent matchStart = getIntent();
String locali = matchStart.getStringExtra(NewMatchPage.LOCALI);
return locali;
}
/**
* prende il nome della squadra ospite dall'intent
* @return
*/
public String getOspiti(){
Intent matchStart = getIntent();
String ospiti = matchStart.getStringExtra(NewMatchPage.OSPITI);
return ospiti;
}
public MatchRugby createMatch(){
TeamRugby teamLocali= new TeamRugby(locali);
TeamRugby teamOspiti= new TeamRugby(ospiti);
MatchRugby partita= new MatchRugby(teamLocali, teamOspiti);
return partita;
}
}
这是 XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/localiTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/ospitiTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
这是发送意图的类:
public class NewMatchPage extends Activity {
public static final String LOCALI = null;
public static final String OSPITI = null;
private Button startMatch;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_match);
startMatch= (Button) findViewById(R.id.startMatch);
startMatch.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0) {
startMatch();
}
});
}
public void startMatch(){
Intent startMatch= new Intent(this, MatchPage.class);
//Prendo il testo scritto nella casella locali e la porto nella partita
EditText locali= (EditText) findViewById(R.id.Locali);
String locali1 = locali.getText().toString();
startMatch.putExtra(LOCALI, locali1);
//Prendo il testo scritto nella casella ospiti e la porto nella partita
EditText ospiti= (EditText) findViewById(R.id.Ospiti);
String ospiti1 = ospiti.getText().toString();
startMatch.putExtra(OSPITI, ospiti1);
//inizio la partita
startActivity(startMatch);
}
}
最后是 logcat 日志:
04-24 16:49:08.928: W/dalvikvm(1377): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
04-24 16:49:08.958: E/AndroidRuntime(1377): FATAL EXCEPTION: main
04-24 16:49:08.958: E/AndroidRuntime(1377): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gmail.david.corsalini.sportscout/com.gmail.david.corsalini.sportscout.MatchPage}: java.lang.NullPointerException
04-24 16:49:08.958: E/AndroidRuntime(1377): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
04-24 16:49:08.958: E/AndroidRuntime(1377): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
04-24 16:49:08.958: E/AndroidRuntime(1377): at android.app.ActivityThread.access$600(ActivityThread.java:123)
04-24 16:49:08.958: E/AndroidRuntime(1377): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
04-24 16:49:08.958: E/AndroidRuntime(1377): at android.os.Handler.dispatchMessage(Handler.java:99)
04-24 16:49:08.958: E/AndroidRuntime(1377): at android.os.Looper.loop(Looper.java:137)
04-24 16:49:08.958: E/AndroidRuntime(1377): at android.app.ActivityThread.main(ActivityThread.java:4424)
04-24 16:49:08.958: E/AndroidRuntime(1377): at java.lang.reflect.Method.invokeNative(Native Method)
04-24 16:49:08.958: E/AndroidRuntime(1377): at java.lang.reflect.Method.invoke(Method.java:511)
04-24 16:49:08.958: E/AndroidRuntime(1377): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-24 16:49:08.958: E/AndroidRuntime(1377): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-24 16:49:08.958: E/AndroidRuntime(1377): at dalvik.system.NativeStart.main(Native Method)
04-24 16:49:08.958: E/AndroidRuntime(1377): Caused by: java.lang.NullPointerException
04-24 16:49:08.958: E/AndroidRuntime(1377): at com.gmail.david.corsalini.sportscout.MatchPage.onCreate(MatchPage.java:25)
04-24 16:49:08.958: E/AndroidRuntime(1377): at android.app.Activity.performCreate(Activity.java:4465)
04-24 16:49:08.958: E/AndroidRuntime(1377): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
04-24 16:49:08.958: E/AndroidRuntime(1377): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
04-24 16:49:08.958: E/AndroidRuntime(1377): ... 11 more
比赛橄榄球课
public class MatchRugby {
public TeamRugby teamA;
public TeamRugby teamB;
/**
* Costruttore della partita
*/
public MatchRugby(TeamRugby teamA, TeamRugby teamB){
this.teamA=teamA;
this.teamB=teamB;
}
/**
* @return the teamA
*/
public TeamRugby getTeamA() {
return teamA;
}
/**
* @param teamA the teamA to set
*/
public void setTeamA(TeamRugby teamA) {
this.teamA = teamA;
}
/**
* @return the teamB
*/
public TeamRugby getTeamB() {
return teamB;
}
/**
* @param teamB the teamB to set
*/
public void setTeamB(TeamRugby teamB) {
this.teamB = teamB;
}
public void EndOfMatch(){
//nothing to do with the problem
}
}