2014-04-02 161 views
1

我剛剛接觸android編程,最近開始製作練習應用程序。應用程序無法啓動

雖然代碼是錯誤釋放的應用程序在仿真器推出時說: 「很不幸的PocketMoney已經停止」

的logcat:

FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to instantiate activity 
ComponentInfo{com.example.pocketmoney/com.example.pocketmoney.PocketMoney}: 
java.lang.NullPointerException 

MainActivity.java

public class PocketMoney extends Activity { 


final String TAG="pocketmoney"; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Log.i(TAG, "Now in onCreate() "); 
    final Button NonMeal_button=(Button)findViewById(R.id.nonmeal_button); 
    final Button Meal_button=(Button)findViewById(R.id.meal_button); 
    if(checkPocketValues()==false) 
    { 
     startSettings_Activity(); 
    } 
    Meal_button.setOnClickListener(new OnClickListener() { 
     //listener for Meal_Button 
     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      startMeal_Money_Activity(); 
     } 
    }); 
    NonMeal_button.setOnClickListener(new OnClickListener() { 
     //Listener for NonMeal_button 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
     startNonMeal_Money_Activity(); 
     } 
    }); 

} 
void startSettings_Activity(){ 
//to start Settings_Activity 
    startActivity(new Intent(getApplicationContext(),Settings_Activity.class)); 
} 
void startMeal_Money_Activity() 
{ 
    startActivity(new Intent(this,Meal_Money_Activity.class)); 
} 
void startNonMeal_Money_Activity() 
{ 
    startActivity(new Intent(this,NonMeal_Money_Activity.class)); 
} 


boolean checkPocketValues() 
{ 
    //to check if Pocket values are filled 

    boolean SettingsFilled=true; 
    Settings_Activity check=new Settings_Activity(); 
    if((check.preferences.getFloat(check.MealMoney,0)==0)&&check.preferences.getFloat(check.NonMealMoney, 0)==0) 
    { 
     SettingsFilled=false; 

    } 

     return SettingsFilled; 
} 
public void onStop() 
{ 
    Log.i(TAG,"now onStop method is called "); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.pocket_money, menu); 
    return true; 
} 

} 
+1

發表您的logcat的錯誤代碼清單文件代碼 –

+1

你有一個'NullPoint erException',可能在你的'onCreate'方法中。發佈完整的堆棧跟蹤並註釋堆棧跟蹤中指定數字的行。 – Mena

+1

請顯示'main.xml'佈局 – nikis

回答

1

你有

Settings_Activity check=new Settings_Activity(); // wrong 

看起來像Settings_Activity是一個Activity類和你實例化這是不對的

Can i Create the object of a activity in other class?

報價拉哈夫

通過治療活動作爲一個普通的Java類,你結束了一個相同null 上下文。由於活動中的大多數方法都是在其上下文中調用的,因此您的 將獲得空指針異常,這就是您的應用程序崩潰的原因。

而且你確實有這個

(check.preferences.getFloat(check.MealMoney,0) 

所以崩潰可能是bcoz這Settings_Activity check=new Settings_Activity();

1
void startSettings_Activity(){ 
//to start Settings_Activity 
    startActivity(new Intent(getApplicationContext(),Settings_Activity.class)); 
} 

通過替換它:

void startSettings_Activity(){ 
//to start Settings_Activity 
    startActivity(new Intent(this,Settings_Activity.class)); 
} 
+0

這與崩潰沒有任何關係 – Raghunandan