2012-02-09 9 views
6

का उपयोग करते समय एप्लिकेशन संदर्भ शून्य वापस लौटा रहा है मुझे नहीं पता कि यह क्यों हो रहा है। जब मैं डीडीएमएस की जांच करता हूं वहां कोई भी फाइल डीआईआर नहीं होती है। मैं अपने एप्लिकेशन उपclass पर इस फ़ोल्डर तक पहुंचने की कोशिश कर रहा हूँ। कुछ पता है कि ऐसा क्यों हो रहा है? मुझे वैश्विक संदर्भ होने के लिए एप्लिकेशन संदर्भ की आवश्यकता है, इसलिए मैं कक्षाओं पर उपयोग कर सकता हूं जो गतिविधि को विस्तारित नहीं करता है।getFilesDir()

package mci.multipratic; 

import java.io.File; 
import java.io.FileInputStream; 
import java.util.Properties; 
import android.app.Application; 
import android.content.Context; 

public class MultiPraticApp extends Application 
{ 
private static MultiPraticApp instance; 
public static MultiPraticAppHelper helper; 

public MultiPraticApp() 
{  
    instance = MultiPraticApp.this; 
    helper = new MultiPraticAppHelper(); 
} 

public static Context getContext() 
{  
    return instance; 
} 
} 

class MultiPraticAppHelper 
{ 
private int offsets = 0; 
private int productIndex = 0; 
private int recipeId = 0; 
private Recipe selectedRecipe; 
private Properties configFile; 

public MultiPraticAppHelper() 
{ 
    Context context = MultiPraticApp.getContext();      

    String path = context.getFilesDir() + "/config.properties"; 

    File file = new File(path); 

    try 
    { 
     FileInputStream fis = new FileInputStream(file); 

     Properties properties = new Properties(); 
     properties.load(fis); 

     fis.close(); 
    }catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
} 

मेरे मैनिफ़ेस्ट फ़ाइल:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="mci.multipratic" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk android:minSdkVersion="4" /> 

<application android:name=".MultiPraticApp"   
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name"> 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" />     
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity 
     android:name=".EnableProductsActivity" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">   
    </activity> 

    <activity 
     android:name=".RecipeSelectionActivity" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">   
    </activity> 

    <activity 
     android:name=".ProductAdjustsActivity" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" 
     > 
    </activity>    
</application> 

+0

क्या आप इसे एमुलेटर या वास्तविक डिवाइस पर आजमा रहे हैं? इस व्यक्ति ने इसे एक एमुलेटर मुद्दे पर ट्रैक किया: http://stackoverflow.com/questions/6779833/getfilesdir-returning-null – CaseyB

+0

ओह ये, ठीक है, मुझे यह प्रश्न मिला लेकिन मैं एक वास्तविक डिवाइस का उपयोग कर रहा हूं। –

+0

आप इस 'गतिविधि' को कैसे लॉन्च कर रहे हैं? क्या यह आपके ऐप में मुख्य 'गतिविधि' है? – CaseyB

उत्तर

6

मेरा मानना ​​है कि समस्या आप निर्माता में प्रारंभ करने के लिए कोशिश कर रहे हैं। कोड क्लास में एप्लिकेशन क्लास के ऑनक्रेट में ले जाएं।

@Override 
public void onCreate() { 
    super.onCreate(); 
    if(instance != null) 
    instance = MultiPraticApp.this; 
    if(helper != null) 
    helper = new MultiPraticAppHelper(); 

} 
+0

ओह, यह था, धन्यवाद। मुझे समझ में नहीं आता कि दूसरी तरफ क्यों काम नहीं किया। मुझे यकीन था कि निर्माता चल रहा था। –

+1

अच्छा पकड़ो! मैंने यह खो दिया! संदर्भ कन्स्ट्रक्टर में मान्य नहीं है! – CaseyB

+0

ओह, मैं देखता हूं .. इसे स्पष्ट करने के लिए धन्यवाद! –

संबंधित मुद्दे