2014-12-24 34 views
-1

我有4個具有相同代碼的類,只有一個區別,每個類都有一個不同的文件.txt路徑,並且我拷貝並粘貼了類,只是改變了類名等等和明顯地是文件路徑,但它不起作用。Android Studio錯誤副本和過去的類

工作的唯一路徑與我將其粘貼到其他類的代碼的類相同,如果我將每個類的第一個路徑放在其中,如果我爲每個類放置不同路徑代碼工作將只是我手動編寫代碼的類中的路徑,所以我認爲它可能是Android Studio的複製和粘貼錯誤。如果我使用複製和粘貼,會發生什麼?我錯了還是錯誤?

的錯誤是:java.lang.NullPointerException這發生,如果我把那個是不一樣的我手動寫的類(顯然是存在的文件)的路徑。

我的代碼:

public class MyMain extends ListActivity { 
    private String[] menus = new String[12]; 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 

     String name = menus[position]; 
     try { 
      Class main = Class.forName("com.Package."+name); 
      Intent intent = new Intent(MyMain.this,main); 
      startActivity(intent); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } 

    private void ReadPrices() throws IOException,MalformedURLException { 
     // BufferedReader reader = new BufferedReader(new FileReader("/mnt/sdcard/Gaming_Prices.txt")); 
     URL url = new URL("http://domain/myfile.txt"); 
     BufferedReader reader = new BufferedReader(new InputStreamReader((url).openStream())); 
     String line = reader.readLine(); 
     int k = 0; 
     for(k = 0; k<12; k++) { 
      menus[k] = line; 
      line=reader.readLine(); 
     } 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // setContentView(R.layout.activity_main); 
     try { 
      ReadPrices(); 
      setListAdapter(new ArrayAdapter<String> (MyMain.this,android.R.layout.simple_expandable_list_item_1,menus)); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 
} 

錯誤日誌:

12-24 02:24:48.369 25855-25855/sparkyka.it.pcbuilds E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.NullPointerException 
    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355) 
    at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 
    at android.widget.AbsListView.obtainView(AbsListView.java:1609) 
    at android.widget.ListView.makeAndAddView(ListView.java:1772) 
    at android.widget.ListView.fillDown(ListView.java:695) 
    at android.widget.ListView.fillFromTop(ListView.java:752) 
    at android.widget.ListView.layoutChildren(ListView.java:1623) 
    at android.widget.AbsListView.onLayout(AbsListView.java:1439) 
    at android.view.View.layout(View.java:7175) 
    at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 
    at android.view.View.layout(View.java:7175) 
    at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 
    at android.view.View.layout(View.java:7175) 
    at android.view.ViewRoot.performTraversals(ViewRoot.java:1144) 
    at android.view.ViewRoot.handleMessage(ViewRoot.java:1863) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:130) 
    at android.app.ActivityThread.main(ActivityThread.java:3687) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:507) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636) 
    at dalvik.system.NativeStart.main(Native Method) 

回答

0

是你的類Activities?如果是,你是否在Manifest中聲明?

編輯:檢查一切正常,此代碼:

Class main = Class.forName("com.Package." + name); 

com.Package不應包含大寫字母。使用

Log.d("LOG", name[position]); 

看看是否一切正常與收到的名稱。

EDIT2:看來我看到了問題。您的txt文件是文件夾assets中的本地文件,對不對? 如果否,請在您的項目的根目錄下創建文件夾assets,並在那裏放置您的txt文件。 Then:

AssetManager am = context.getAssets(); 
InputStream is = am.open("test.txt"); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 

我希望這會有所幫助。

+0

我的課都沒有活動,我有一個ListActivity和每個項目有一個類,每類(項)具有不同的文件來加載。清潔項目不解決問題 – ClearCode

+0

@ClearCode,你可以顯示日誌請和部分代碼? – Yurets

+0

@ClearCode,請問需要看日誌和哪一行是空指針?您也可以使用調試模式並在您認爲可能成爲問題的位置切換斷點。 – Yurets

1

將此代碼複製到另一個類時,是否將此行更改爲引用新類,例如:從MyMain.javaYourNewClass.java

setListAdapter(new ArrayAdapter<String> 
(MyMain.this,android.R.layout.simple_expandable_list_item_1,menus)); 
+0

對不起,但我不明白,我更改每個類的代碼,每個「MyMain」更改類的名稱,如果我在類「Test」中複製代碼,則每個MyMain都將在Test中更改 – ClearCode