2014-04-02 162 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