我有这段代码(LINE 2)正在返回:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.projecti_popularmovies/com.example.android.projecti_popularmovies.MainActivity}: java.lang.NullPointerException
我的代码是:
public class MainActivity extends AppCompatActivity {
public MovieFragment mMovieFragment;
public Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
mContext = this;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMovieFragment = new MovieFragment();
if(savedInstanceState == null){
getSupportFragmentManager().beginTransaction()
.add(R.id.container, mMovieFragment)
.commit();
}
if(mMovieFragment.getArrayImages() == null){
Log.v(null, "Array is empty");
}
GridView gridView = (GridView) findViewById(R.id.gridview);
gridView.setAdapter(new ImageAdapter(this, mMovieFragment.getArrayImages()));
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
Toast.makeText(MainActivity.this, "" + position,
Toast.LENGTH_SHORT).show();
}
});
}
我在此之前检查过getArrayImages并且它不为null,我也尝试通过getActivity()发送活动,但是找不到方法getActivity()。
这个这个词指的是这个活动背景
这是我的ImageAdapter类的构造函数:
public ImageAdapter(Context context, String[] images) {
这是填充mArrayImages的代码:
private Void getMovieImagesFromJson(String movieJSONstr) throws JSONException {
final String OWM_RESULTS = "results";
final String OWM_POSTERPATH = "poster_path";
JSONObject movieJson = new JSONObject(movieJSONstr);
JSONArray movieArray = movieJson.getJSONArray(OWM_RESULTS);
Log.v("SIZE MOVIE ARRAY: ", Integer.toString(movieArray.length()));
for(int i = 0; i < movieArray.length(); i++) {
JSONObject movieObj = movieArray.getJSONObject(i);
mArrayImages[i] = movieObj.getString(OWM_POSTERPATH);
}
return null;
}
答案 0 :(得分:0)
声明GlobalVariable
public Context mContext;
在OnCreate()
执行此操作:
mContext = this;
然后你可以调用setAdapter,你的Context
赢了。
gridView.setAdapter(new ImageAdapter(mContext, mMovieFragment.getArrayImages()));
尝试改为使用MainActivity.this
。
答案 1 :(得分:0)
而不是
MainActivity.this
使用getApplicationContext()