com.d4a.tobias.Book.onCreateView上的java.lang.NullPointerException
您好,我正在开发一个应用程序,当我测试它时,启动时会崩溃 这是我的日志:com.d4a.tobias.Book.onCreateView上的java.lang.NullPointerException,java,android,Java,Android,您好,我正在开发一个应用程序,当我测试它时,启动时会崩溃 这是我的日志: 11-29 00:16:19.582: E/memtrack(1549): Couldn't load memtrack module (No such file or directory) 11-29 00:16:19.582: E/android.os.Debug(1549): failed to load memtrack module: -2 11-29 00:16:28.782: E/memtrack(1
11-29 00:16:19.582: E/memtrack(1549): Couldn't load memtrack module (No such file or directory)
11-29 00:16:19.582: E/android.os.Debug(1549): failed to load memtrack module: -2
11-29 00:16:28.782: E/memtrack(1609): Couldn't load memtrack module (No such file or directory)
11-29 00:16:28.782: E/android.os.Debug(1609): failed to load memtrack module: -2
11-29 00:16:29.462: E/AndroidRuntime(1620): FATAL EXCEPTION: main
11-29 00:16:29.462: E/AndroidRuntime(1620): Process: com.d4a.tobias, PID: 1620
11-29 00:16:29.462: E/AndroidRuntime(1620): java.lang.NullPointerException
11-29 00:16:29.462: E/AndroidRuntime(1620): at com.d4a.tobias.Book.onCreateView(Book.java:55)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:870)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:431)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:139)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.support.v4.view.ViewPager.populate(ViewPager.java:804)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1016)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.View.measure(View.java:16458)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.View.measure(View.java:16458)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.View.measure(View.java:16458)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
11-29 00:16:29.462: E/AndroidRuntime(1620): at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.View.measure(View.java:16458)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-29 00:16:29.462: E/AndroidRuntime(1620): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2289)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.View.measure(View.java:16458)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1914)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1111)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1293)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5582)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.Choreographer.doFrame(Choreographer.java:532)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.os.Handler.handleCallback(Handler.java:733)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.os.Handler.dispatchMessage(Handler.java:95)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.os.Looper.loop(Looper.java:137)
11-29 00:16:29.462: E/AndroidRuntime(1620): at android.app.ActivityThread.main(ActivityThread.java:4998)
11-29 00:16:29.462: E/AndroidRuntime(1620): at java.lang.reflect.Method.invokeNative(Native Method)
11-29 00:16:29.462: E/AndroidRuntime(1620): at java.lang.reflect.Method.invoke(Method.java:515)
11-29 00:16:29.462: E/AndroidRuntime(1620): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
11-29 00:16:29.462: E/AndroidRuntime(1620): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
11-29 00:16:29.462: E/AndroidRuntime(1620): at dalvik.system.NativeStart.main(Native Method)
11-29 00:16:38.902: E/WindowManager(494): Starting window AppWindowToken{42e4abd8 token=Token{42681aa0 ActivityRecord{42311100 u0 com.d4a.tobias/.MainActivity t33}}} timed out
下面是Book.java:
package com.d4a.tobias;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.List;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.res.AssetManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import com.actionbarsherlock.app.SherlockFragment;
import com.d4a.tobias.R;
import com.sibext.android_shelf.ImportBooks;
import com.sibext.android_shelf.adapter.ShelfAdapter;
public class Book extends SherlockFragment {
Button bt1;
//Shelf
private static final String TARGET_DIRECTORY = "mnt/sdcard/shelf/";
private ListView list;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Get the view from fragmenttab1.xml
View v=inflater.inflate(R.layout.fragmenttab1, container, false);
// shelf
File dir = new File(TARGET_DIRECTORY);
if(!dir.exists()){
dir.mkdirs();
//past here
addBooksFromAssetsToCard();
}else{
String files[] = dir.list();
// line 55 if(files.length == 0){
//past here
addBooksFromAssetsToCard();
}
}
list = (ListView) v. findViewById(R.id.list);
ShelfAdapter adapter = new ShelfAdapter(this,TARGET_DIRECTORY);
adapter.setToListView(list);
//Intent in = new Intent(v.getContext(), com.sibext.android_shelf.MainActivityShelf.class);
//startActivity(in);
//Toast.makeText(v.getContext(), "Did you see the toast msg?",Toast.LENGTH_LONG).show();
//buttons for toolbelt do not take out!!
v. findViewById(R.id.button10).setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String url = "http://www.google.com";
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browserIntent);
}
});
v. findViewById(R.id.button11).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// String url = "http://www.google.com";
// Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
// startActivity(browserIntent);
Intent i=new Intent(getActivity().getApplicationContext(),Launchalot.class);
startActivity(i);
}
});
v. findViewById(R.id.tools).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// String url = "http://www.google.com";
// Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
// startActivity(browserIntent);
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("com.d4a.stz","com.d4a.stz.ToolsHome"));
intent.putExtra("grace", "Hi");
startActivity(intent);
}
});
v. findViewById(R.id.googleplay).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// String url = "http://www.google.com";
// Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
// startActivity(browserIntent);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://play.google.com/store/apps"));
startActivity(intent);
}
});
v. findViewById(R.id.youtube).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// String url = "http://www.google.com";
// Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
// startActivity(browserIntent);
Intent videoClient = new Intent(Intent.ACTION_VIEW);
videoClient.setClassName("com.google.android.youtube", "com.google.android.youtube.WatchActivity");
startActivity(videoClient);
}
});
v. findViewById(R.id.email).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("com.d4a.eMailTime","com.fsck.k9.activity.Accounts"));
intent.putExtra("grace", "Hi");
startActivity(intent);
}
});
//shelf
//ShelfAdapter adapter = new ShelfAdapter(this, TARGET_DIRECTORY);
//adapter.setToListView(list);
return v;
}
public void addBooksFromAssetsToCard(){
List<String> books;
try {
books = getBooksFromAsset(getActivity());
for(String book : books){
copyFromAssets(book);
}
} catch (Exception e) {
}
}
public List<String> getBooksFromAsset(Context ctx) throws Exception
{
AssetManager assetManager =ctx.getAssets();
String[] files = assetManager.list("books");
List<String> it=Arrays.asList(files);
return it;
}
public void copyFromAssets(String book)
{
AssetManager assetManager = getActivity().getAssets();
String[] files = null;
InputStream in = null;
OutputStream out = null;
//String filename = "filename.ext";
try
{
in = assetManager.open("books/"+book);
out = new FileOutputStream(Environment.getExternalStorageDirectory()+File.separator+"/shelf/"+book);
Log.d("Copying...", ""+book);
copyFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
}
catch(Exception e)
{
Log.e("tag", "Failed to copy asset file: " + book, e);
}
}
public void copyFile(InputStream in, OutputStream out) throws Exception
{
byte[] buffer = new byte[1024];
int read;
while((read = in.read(buffer)) != -1)
{
out.write(buffer, 0, read);
}
Log.d("Copy_State", "Done...");
}
public void onImportClicked(View v){
Toast.makeText(getActivity(), "Please Wait", Toast.LENGTH_LONG)
.show();
Intent in = new Intent(getActivity(), ImportBooks.class);
startActivity(in);
return;
}
}
我已经尝试了所有的方法,谷歌搜索logcat错误,询问一个对java很好的朋友,但仍然没有结果
任何帮助都将是惊人的
提前谢谢
Chrisdir.list(),此方法要么返回Null,要么返回文件夹中的文件列表,确保您引用的文件夹中有一些文件,否则您将获得NPE。您能指出第55行是什么吗?Kailash Daphi我在第55行添加了一条注释,请检查:)如果Techfist的解决方案不起作用,尝试在onCreateView中设置断点并逐步完成代码。此外,我不认为这是导致错误的原因,但您永远不应该像这样大写您的包名:com.d4a.eMailTime。如果EmailTime是java类名,请尝试com.d4a.EmailTime;如果不是,请尝试com.d4a.EmailTime。
11-29 00:29:29.662: E/AndroidRuntime(2710): java.lang.NullPointerException
11-29 00:29:29.662: E/AndroidRuntime(2710): at com.d4a.tobias.Book.onCreateView(Book.java:55)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:870)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:431)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:139)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.support.v4.view.ViewPager.populate(ViewPager.java:804)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1016)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.View.measure(View.java:16458)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.View.measure(View.java:16458)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.View.measure(View.java:16458)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
11-29 00:29:29.662: E/AndroidRuntime(2710): at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.View.measure(View.java:16458)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-29 00:29:29.662: E/AndroidRuntime(2710): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2289)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.View.measure(View.java:16458)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1914)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1111)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1293)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5582)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.Choreographer.doFrame(Choreographer.java:532)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.os.Handler.handleCallback(Handler.java:733)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.os.Handler.dispatchMessage(Handler.java:95)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.os.Looper.loop(Looper.java:137)
11-29 00:29:29.662: E/AndroidRuntime(2710): at android.app.ActivityThread.main(ActivityThread.java:4998)
11-29 00:29:29.662: E/AndroidRuntime(2710): at java.lang.reflect.Method.invokeNative(Native Method)
11-29 00:29:29.662: E/AndroidRuntime(2710): at java.lang.reflect.Method.invoke(Method.java:515)
11-29 00:29:29.662: E/AndroidRuntime(2710): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
11-29 00:29:29.662: E/AndroidRuntime(2710): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
11-29 00:29:29.662: E/AndroidRuntime(2710): at dalvik.system.NativeStart.main(Native Method)
11-29 00:29:38.802: E/WindowManager(494): Starting window AppWindowToken{429fc770 token=Token{42516cc8 ActivityRecord{426874a8 u0 com.d4a.tobias/.MainActivity t38}}} timed out