好的,所以当按下 startGame 按钮时出现问题。按下按钮时应用程序崩溃。活动在清单中实例化,所以我不确定错误在哪里。意图的代码是另一个的副本(有效),所以我不知道哪里出错了。
错误日志:
02-25 14:46:51.064:E / AndroidRuntime(1261):致命异乎寻常:主要 02-25 14:46:51.064:E / AndroidRuntime(1261):进程:com.example.hegemony,PID:1261 02-25 14:46:51.064:E / AndroidRuntime(1261):java.lang.RuntimeException:无法实例化活动ComponentInfo {com.example.hegemony / com.example.hegemony.PlayerTurn}:java.lang.NullPointerException
清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.hegemony"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.hegemony.SplashScreen"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.hegemony.StartScreen" >
<intent-filter>
<action android:name="com.example.hegemony.STARTSCREEN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="com.example.hegemony.SetupHomeScreen" >
<intent-filter>
<action android:name="com.example.hegemony.SETUPHOMESCREEN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="com.example.hegemony.SetupPlayer"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.example.hegemony.SETUPPLAYER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="com.example.hegemony.PlayerTurn"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.example.hegemony.PLAYERTURN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
发送活动的Java代码:
public class SetupHomeScreen extends Activity{
private ArrayList<Player> p = GameMaster.players;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setup_home_screen);
getActionBar().hide();
updatePlayers();
Button gotoInput = (Button) findViewById(R.id.btnSetupPlayer);
gotoInput.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent toInput = new Intent("com.example.hegemony.SETUPPLAYER");
startActivity(toInput);
}
});
Button startGame = (Button) findViewById(R.id.btnStartGame);
startGame.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent toStart = new Intent("com.example.hegemony.PLAYERTURN");
startActivity(toStart);
}
});
}
public void updatePlayers(){
TextView playerList = (TextView) findViewById(R.id.playerList);
String msg = "";
for(int i=0;i < p.size();i++)
msg = msg + "\n - "+p.get(i).getName();
playerList.setText(msg);
if(p.size() >=2){
Button enable = (Button) findViewById(R.id.btnStartGame);
enable.setEnabled(true);
}
}
}
接收活动的Java代码:
public class PlayerTurn extends Activity {
final ActionBar actionBar = getActionBar();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_player_turn);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
};
}
}
答案 0 :(得分:0)
Button startGame = (Button) findViewById(R.id.btnStartGame);
startGame.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent toStart = new Intent(SendingActivity.this, NewActivity.class);
startActivity(toStart);
}
});
我认为这是你应该如何开始一个意图。也许它缺少一个上下文或“activityname”不是正确的方法。我尝试以你正在尝试的方式开始一个活动,它也给了我一个错误,不是同一个错误,但是它没有用。 如果我想提供的解决方案不起作用,我很抱歉。这是我第一次尝试帮助某人。我希望它有效。
答案 1 :(得分:0)
根据logcat错误消息,您的活动类无法实例化。实例化涉及任何类成员变量的分配和赋值。在PlayerTurn的情况下,唯一的一个就是:
final ActionBar actionBar = getActionBar();
对getActionBar()的调用会抛出NullPointerException,因为尚未构建活动的窗口 - 在onCreate()中调用setContentView()之后应调用getActionBar()。您只需将该行代码移动到onCreate()即可解决此问题。
如果您仍希望将其保留为类成员变量,请声明它但不指定它:
ActionBar actionBar;
...然后在onCreate()中执行赋值:
actionBar = getActionBar();