Java setText使apk崩溃

Java setText使apk崩溃,java,android,android-layout,settext,Java,Android,Android Layout,Settext,我正在尝试开发一个非常简单的apk。 我正在使用文本视图显示我在以前的活动中输入的两个团队的名称(带到这里是为了打开此活动)。 当我尝试使用setText显示这些团队的名称时,apk崩溃了 这是崩溃的类: public class MatchPage extends Activity { private String locali= null; private String ospiti= null; private TextView localiTV; private TextView

我正在尝试开发一个非常简单的apk。
我正在使用文本视图显示我在以前的活动中输入的两个团队的名称(带到这里是为了打开此活动)。 当我尝试使用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>
最后是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
    }
}
由于上述错误,您的partta对象似乎为null。从初始化它的代码开始

createMatch();
将上面的方法替换为下面的行

partita = createMatch();
您还可以更改以下代码::

public void createMatch(){
    TeamRugby teamLocali= new TeamRugby(locali);
    TeamRugby teamOspiti= new TeamRugby(ospiti);
    partita= new MatchRugby(teamLocali, teamOspiti);
} 

onCreate
方法中的
MatchPage
类的第25行有一个
NullPointerException
。不确定它到底在您发布的代码中是哪一行,但我最好的猜测是您的
findviewbyd
调用找不到任何内容。

您的变量范围已关闭。按如下方式设置您的类:

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(){
    if (locali == null) {
      Intent matchStart = getIntent();
      locali = matchStart.getStringExtra(NewMatchPage.LOCALI);
    }
    return locali;
}

/**
 * prende il nome della squadra ospite dall'intent
 * @return
 */
public String getOspiti(){
    if (ospiti == null) {
      Intent matchStart = getIntent();
      ospiti = matchStart.getStringExtra(NewMatchPage.OSPITI);
    }
    return ospiti;
}

public MatchRugby createMatch(){
    TeamRugby teamLocali= new TeamRugby(locali);
    TeamRugby teamOspiti= new TeamRugby(ospiti);
    partita = new MatchRugby(teamLocali, teamOspiti);
    return partita
}

  private String locali
  private String ospiti
  private MatchRugby partita
}

我看不出你在哪里修改了代码,你只是在末尾添加了一个locali-ospiti和partta的副本,或者我没有找到什么?@DavidCorsalini抱歉,我没有看到你在顶部的声明。你可以在最后忽略它们。主要的变化是您的函数从:
MatchRugby partita=newmatchrugby(teamLocali,teamOspiti)
partita=新的MatchRugby(teamLocali、teamOspiti)。通过再次添加类型,您创建了一个局部变量,该变量只存在于函数内部,然后被销毁。删除类型指向类级别变量。对locali和ospiti执行同样的操作这就成功了,谢谢,现在我只需要找到我弄糟的地方,并在LocalTV上使用setText的ospiti值@DavidCorsalini请确保接受和/或向上投票解决/帮助您的问题的答案-并欢迎使用StackOverflow:)这样做会导致错误,因为createMatch的返回类型不是MatchRugby(而是void)。只需将方法调用替换为partita=createMatch();我得到了一个工作活动,但是textview给了我“locali null”和“ospiti null”。你能添加你的MatchRugby类吗?可能需要更改它们
public void createMatch(){
    TeamRugby teamLocali= new TeamRugby(locali);
    TeamRugby teamOspiti= new TeamRugby(ospiti);
    partita= new MatchRugby(teamLocali, teamOspiti);
} 
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(){
    if (locali == null) {
      Intent matchStart = getIntent();
      locali = matchStart.getStringExtra(NewMatchPage.LOCALI);
    }
    return locali;
}

/**
 * prende il nome della squadra ospite dall'intent
 * @return
 */
public String getOspiti(){
    if (ospiti == null) {
      Intent matchStart = getIntent();
      ospiti = matchStart.getStringExtra(NewMatchPage.OSPITI);
    }
    return ospiti;
}

public MatchRugby createMatch(){
    TeamRugby teamLocali= new TeamRugby(locali);
    TeamRugby teamOspiti= new TeamRugby(ospiti);
    partita = new MatchRugby(teamLocali, teamOspiti);
    return partita
}

  private String locali
  private String ospiti
  private MatchRugby partita
}