尝试调用虚拟方法';java.lang.String android.content.Context.getPackageName()';关于nullobjectreference

尝试调用虚拟方法';java.lang.String android.content.Context.getPackageName()';关于nullobjectreference,java,android,sqlite,nullpointerexception,android-sqlite,Java,Android,Sqlite,Nullpointerexception,Android Sqlite,我试图从我的sqlite数据库中获取一些数据->在RecyclerView中显示它->点击一个项目,我想开始一个新的活动 但当我点击其中一个项目时,在显示项目列表后,会弹出以下错误: java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String android.content.Context.getPackageName()” 我的主要活动类: import android.content.Context; import andro

我试图从我的sqlite数据库中获取一些数据->在RecyclerView中显示它->点击一个项目,我想开始一个新的活动

但当我点击其中一个项目时,在显示项目列表后,会弹出以下错误: java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String android.content.Context.getPackageName()”

我的主要活动类:

import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteException;
import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.widget.Toast;
import com.example.blue2dew.trakin.Item.item;
import com.example.blue2dew.trakin.MovieAdapter;


import java.util.ArrayList;




public class MainActivity extends AppCompatActivity {
    private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mtoggle;
private NavigationView navigationView;
private Toolbar toolbar;
private Movie_det movie_det;
Context context;

private RecyclerView recyclerView;
private DatabaseHelper databaseHelper;
 ArrayList<item> arrayList=new ArrayList<item>();
private Cursor cursor;
private MovieAdapter movieAdapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    mDrawerLayout=(DrawerLayout) findViewById(R.id.activity_main);
    navigationView=(NavigationView)findViewById(R.id.navigation_view);
    toolbar=(Toolbar)findViewById(R.id.nav_action);
    setSupportActionBar(toolbar);
    mtoggle=new ActionBarDrawerToggle(this,mDrawerLayout,R.string.open,R.string.close);

    recyclerView=(RecyclerView)findViewById(R.id.recycler_view);
    mDrawerLayout.addDrawerListener(mtoggle);
    mtoggle.syncState();

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);


    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            item.setChecked(true);
            mDrawerLayout.closeDrawers();
            return false;
        }
    });

    loadDatabase();

}


@Override
public boolean onOptionsItemSelected(MenuItem item){
    if(mtoggle.onOptionsItemSelected(item)){
        return true;
    }

    return super.onOptionsItemSelected(item);
}

public void loadDatabase(){
    databaseHelper=new DatabaseHelper(MainActivity.this);

    try{
        databaseHelper.checkAndCopyDatabase();
        databaseHelper.openDatabase();
    }catch(SQLiteException e){
        e.printStackTrace();
    }


    try {
        cursor = databaseHelper.QueryData("select * from movieDetails");
        if (cursor != null) {
            if (cursor.moveToFirst()) {
                do {
                    item itemv = new item();
                    itemv.setMovieName(cursor.getString(2));
                    itemv.setReleaseDate(cursor.getString(5));
                    itemv.setMovieImage(cursor.getBlob(1));

                    arrayList.add(itemv);


                } while (cursor.moveToNext());
            }
        }
    }catch (SQLiteException e){
        e.printStackTrace();
    }


    LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getApplicationContext());
    movieAdapter=new MovieAdapter(MainActivity.this,context,arrayList);



    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(linearLayoutManager);
    recyclerView.setAdapter(movieAdapter);

}



}
错误:

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.blue2dew.trakin, PID: 7430 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at android.content.ComponentName.(ComponentName.java:128)
at android.content.Intent.(Intent.java:4521) at com.example.blue2dew.trakin.MovieAdapter$MovieViewHolder.onClick(MovieAdapter.java:127)
at android.view.View.performClick(View.java:5209)
at android.view.View$PerformClick.run(View.java:21179)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5437)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

你可以这样做

    @Override
    public void onClick(View v) {
    int position=getAdapterPosition();
    item item=this.items.get(position);
    Intent intent=new Intent (v.getContext(),Main2Activity.class);
    v.getContext().startActivity(intent);
}

可能不相关:当您可以从视图中获取上下文时,视图持有者和适配器中没有上下文和活动。重新打开此NPE是因为不了解Android的工作原理。太普通了,在这种情况下没有帮助。我的错!我刚刚开始学习android。谢谢回复!使用视图获取上下文。谢谢,这很有帮助!如果有帮助的话,请投票支持这个答案。快乐编码!
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.blue2dew.trakin, PID: 7430 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at android.content.ComponentName.(ComponentName.java:128)
at android.content.Intent.(Intent.java:4521) at com.example.blue2dew.trakin.MovieAdapter$MovieViewHolder.onClick(MovieAdapter.java:127)
at android.view.View.performClick(View.java:5209)
at android.view.View$PerformClick.run(View.java:21179)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5437)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    @Override
    public void onClick(View v) {
    int position=getAdapterPosition();
    item item=this.items.get(position);
    Intent intent=new Intent (v.getContext(),Main2Activity.class);
    v.getContext().startActivity(intent);
}