Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 活动没有';不要一次点击就显示出来_Java_Android - Fatal编程技术网

Java 活动没有';不要一次点击就显示出来

Java 活动没有';不要一次点击就显示出来,java,android,Java,Android,在修复了其他一些bug之后,我的代码中出现了一个问题。我的“应该”显示电影详细信息的活动没有正确显示,只打开了一个空白活动 我的详细活动: public class detailsActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(

在修复了其他一些bug之后,我的代码中出现了一个问题。我的“应该”显示电影详细信息的活动没有正确显示,只打开了一个空白活动

我的详细活动:

public class detailsActivity extends AppCompatActivity {

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

    Intent intent = getIntent();
    String fragment = intent.getExtras().getString("FRAGMENT");
    if(fragment.equals("MOVIE")) {
        MovieGridFragment frag = new MovieGridFragment();
        getSupportFragmentManager().beginTransaction().replace(R.id.fl_detail_fragment,frag).commit();
    } else {
        getFragmentManager().beginTransaction().replace(R.id.fl_detail_fragment, new displayMovieDetails()).commit();
    }
}}
主要活动:

public class MainActivity extends AppCompatActivity implements clickInterfaceHelper {

    public static String sorterString = null;
    public static String urlBase = "https://api.themoviedb.org/3/movie/";
    public static String urlFinal = null;

    RequestQueue requestQueue;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if(savedInstanceState == null) {
            MovieGridFragment fragment = new MovieGridFragment();
                    fragment.setClickListener(this);
                    getSupportFragmentManager().beginTransaction()
                    .add(R.id.activity_container, fragment)
                    .commit();
            movieData.movieDataPosition = 0;
        }
        if(savedInstanceState != null) {
            sorterString = savedInstanceState.getString("SORTER");
        }

        if(savedInstanceState == null)
            movieData.movieDataPosition = 0;

        if(sorterString==null)
            sorterString="popular?";
        if(sorterString!="favorite" && sorterString!=null) {
            if(networkChecker.isNetworkAvailableChecker(this)) {
                movieRequest();
            }
        }



    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu_act, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if(id == R.id.m_popularity_action) {
            if(sorterString != "popular?") {
                sorterString = "popular?";
                if(networkChecker.isNetworkAvailableChecker(this))
                movieRequest();
            }
            return true;
        }

        if(id == R.id.m_action_voter) {
            if(sorterString != "top_rated?") {
                sorterString = "top_rated?";
                if(networkChecker.isNetworkAvailableChecker(this))
                movieRequest();
            }
            return true;
        }

        if(id == R.id.m_favorite_btn) {
            if(sorterString != "favorite") {
                SQLiteOpenHelper helper = new movieDataDbHelper(this);
                SQLiteDatabase database = helper.getReadableDatabase();
                Cursor cursor= database.query(movieDataContract.contractEntry.TABLE_NAME,
                        new String[] {
                                movieDataContract.contractEntry.ID,
                                movieDataContract.contractEntry.IMG_PATH},null,null,null,null,null);
                if(cursor.getCount() == 0) {
                    Toast.makeText(this, "there are no favorite movies yet!",Toast.LENGTH_SHORT).show();
                } else {
                    sorterString = "favorite";
                    showFavoriteFragment();
                }
                database.close();
                helper.close();
                cursor.close();
            }
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    public void showFavoriteFragment() {
        favoriteMoviesDetailsFragment fragment = new favoriteMoviesDetailsFragment();
        try {
            getFragmentManager().beginTransaction().replace(R.id.activity_container,fragment).commit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        outState.putString("SORTER", sorterString);
        outState.putInt("POSITION",movieData.movieDataPosition);
        super.onSaveInstanceState(outState, outPersistentState);
    }

    public void movieRequest() {
        final MovieGridFragment gridFragment = new MovieGridFragment();
        gridFragment.setClickListener(this);
            urlFinal = urlBase + sorterString + movieData.apiKey;
            urlFinal.trim();
            requestQueue = Volley.newRequestQueue(this);
            JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, urlFinal, null, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        JSONArray array = response.getJSONArray("results");
                        movieData.movieDataArray = new movieData[array.length()];

                        for (int i = 0; i < array.length(); i++) {
                            movieData movie = new movieData();
                            JSONObject jsonObject = array.getJSONObject(i);
                            movie.setMovieId(jsonObject.getString("id"));
                            movie.setMovieImagePath(jsonObject.getString("poster_path"));
                            movie.setMovieTitle(jsonObject.getString("original_title"));
                            movie.setMoviePlot(jsonObject.getString("overview"));
                            movie.setMovieVoting(jsonObject.getString("vote_average"));
                            movie.setMovieReleaseDate(jsonObject.getString("release_date"));
                            movieData.movieDataArray[i] = movie;
                        }


                        gridFragment.movieDataList = Arrays.asList(movieData.movieDataArray);
                        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                        transaction.replace(R.id.activity_container, gridFragment);
                        try {
                            transaction.commitAllowingStateLoss();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e("volley", String.valueOf(error));
                }
            }
            );
            requestQueue.add(jsonObjectRequest);

    }

    @Override
    public void clickOnItem(int id) {
        movieData.movieDataPosition = id;
        if(movieData.movieDataArray == null) {
            movieRequest();
        } else {
            Intent intent = new Intent(this, detailsActivity.class);
            intent.putExtra("FRAGMENT","MOVIE");
            startActivity(intent);
        }

    }

    @Override
    public void favoriteMovieItem(int movieId) {
        movieData.dbPosition = movieId;

        Intent intent = new Intent(this,detailsActivity.class);
        intent.putExtra("FRAGMENT","favorite");
        startActivity(intent);
    }
}
公共类MainActivity扩展AppCompative实现ClickInterface帮助{
公共静态字符串sorterString=null;
公共静态字符串urlBase=”https://api.themoviedb.org/3/movie/";
公共静态字符串urlFinal=null;
请求队列请求队列;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
如果(savedInstanceState==null){
MovieGridFragment=新的MovieGridFragment();
fragment.setClickListener(this);
getSupportFragmentManager().beginTransaction()
.add(R.id.activity\u容器,片段)
.commit();
movieData.movieDataPosition=0;
}
如果(savedInstanceState!=null){
sorterString=savedInstanceState.getString(“分类器”);
}
如果(savedInstanceState==null)
movieData.movieDataPosition=0;
if(sorterString==null)
sorterString=“流行?”;
if(sorterString!=“收藏夹”&&sorterString!=null){
if(networkChecker.isNetworkAvailableChecker(此)){
movieRequest();
}
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.main\u menu\u act,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
if(id==R.id.m_受欢迎程度_动作){
如果(sorterString!=“流行?”){
sorterString=“流行?”;
if(networkChecker.isNetworkAvailableChecker(此))
movieRequest();
}
返回true;
}
if(id==R.id.m\u操作\u表决器){
如果(分拣管柱!=“最高等级?”){
sorterString=“最高等级?”;
if(networkChecker.isNetworkAvailableChecker(此))
movieRequest();
}
返回true;
}
如果(id==R.id.m_favorite_btn){
if(排序字符串!=“收藏夹”){
SQLiteOpenHelper=newmoviedatadbhelper(this);
SQLiteDatabase=helper.getReadableDatabase();
Cursor Cursor=database.query(movieDataContract.contractEntry.TABLE_NAME,
新字符串[]{
movieDataContract.contractEntry.ID,
movieDataContract.contractEntry.IMG_PATH},null,null,null,null,null);
if(cursor.getCount()==0){
Toast.makeText(这个“还没有最喜欢的电影!”,Toast.LENGTH_SHORT.show();
}否则{
sorterString=“收藏夹”;
showFavoriteFragment();
}
close()数据库;
helper.close();
cursor.close();
}
返回true;
}
返回super.onOptionsItemSelected(项目);
}
public void showFavoriteFragment(){
favoriteMoviesDetailsFragment=新的favoriteMoviesDetailsFragment();
试一试{
getFragmentManager().beginTransaction().replace(R.id.activity_容器,fragment.commit();
}捕获(例外e){
e、 printStackTrace();
}
}
@凌驾
SaveInstanceState上的公共无效(Bundle outState、PersistableBundle outPersistentState){
outState.putString(“分类器”,分类器串);
outState.putInt(“位置”,movieData.movieDataPosition);
super.onSaveInstanceState(outState、outPersistentState);
}
公开无效电影请求(){
final MovieGridFragment gridFragment=新的MovieGridFragment();
setClickListener(这个);
urlFinal=urlBase+sorterString+movieData.apiKey;
url final.trim();
requestQueue=Volley.newRequestQueue(this);
JsonObjectRequest JsonObjectRequest=新的JsonObjectRequest(Request.Method.GET,urlFinal,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONArray数组=response.getJSONArray(“结果”);
movieData.movieDataArray=新的movieData[array.length()];
对于(int i=0;ipublic class MovieGridFragment extends Fragment {

    public clickInterfaceHelper clickListener;
    private GridView movieGridView;
    private int index;
    public List<movieData> movieDataList = new ArrayList<>();

    public MovieGridFragment() {} //empty constructor

    @Override
    public void onAttach(Context context) {
        //this.clickListener = (clickInterfaceHelper) context;
        super.onAttach(context);
    }

    public void setClickListener(clickInterfaceHelper listener) {
        this.clickListener = listener;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        setHasOptionsMenu(true);

        if(movieDataList.isEmpty() && networkChecker.isNetworkAvailableChecker(getContext())) {
            movieDataList = new ArrayList<movieData>();
        }

        if(!movieDataList.isEmpty() && !networkChecker.isNetworkAvailableChecker(getContext())) {
            movieDataList = new ArrayList<movieData>();
        }

        if(savedInstanceState != null) {
            index = savedInstanceState.getInt("INDEX");
            if(movieDataList.isEmpty()) {
                movieDataList.addAll(Arrays.asList((movieData[]) savedInstanceState.getSerializable("OLDMOVIEDATA")));
            }
        }

        View rootView = inflater.inflate(R.layout.movie_display_fragment, container, false);

        movieGridView = (GridView) rootView.findViewById(R.id.gv_movie_display);
        movieAdapter adapter = new movieAdapter(getActivity(),movieDataList);
        adapter.notifyDataSetChanged();
        movieGridView.setAdapter(adapter);
        movieGridView.smoothScrollToPosition(index);
        movieGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if(clickListener != null)
                        clickListener.clickOnItem(position);

            }
        });
        return rootView;
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        outState.putSerializable("OLDMOVIEDATA",movieData.movieDataArray);
        outState.putInt("INDEX",movieGridView.getFirstVisiblePosition());
        super.onSaveInstanceState(outState);
    }


}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".detailsActivity">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/fl_detail_fragment">
    </FrameLayout>
</LinearLayout>
public class MovieGridFragment extends Fragment {

    public clickInterfaceHelper clickListener;
    private GridView movieGridView;
    private int index;
    public List<movieData> movieDataList = new ArrayList<>();


    public void setMovieDataList(List<movieData> movieDataList) {
        this.movieDataList = movieDataList;
    }

    public void setClickListener(clickInterfaceHelper listener) {
        this.clickListener = listener;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        setHasOptionsMenu(true);
        View rootView = inflater.inflate(R.layout.movie_display_fragment, container, false);
        movieGridView = (GridView) rootView.findViewById(R.id.gv_movie_display);

        if (movieDataList != null) {
            initMovieGrid();
        }
        return rootView;
    }

    private void initMovieGrid() {
        movieAdapter adapter = new movieAdapter(getActivity(), movieDataList);
        adapter.notifyDataSetChanged();
        movieGridView.setAdapter(adapter);
        movieGridView.smoothScrollToPosition(index);
        movieGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if (clickListener != null)
                    clickListener.clickOnItem(position);

            }
        });
    }
}
MovieGridFragment fragment = new MovieGridFragment();
fragment.setClickListener(this);
fragment.setMovieDataList(movieDataList);
getSupportFragmentManager().beginTransaction()
        .add(R.id.activity_container, fragment).commit();
public class MovieGridFragment extends Fragment {

    public clickInterfaceHelper clickListener;
    private GridView movieGridView;
    private int index;
    public List<movieData> movieDataList = new ArrayList<>();


    public void setMovieDataList(List<movieData> movieDataList) {
        this.movieDataList = movieDataList;
        if (movieDataList != null) {
            initMovieGrid();
        }
    }

    public void setClickListener(clickInterfaceHelper listener) {
        this.clickListener = listener;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        setHasOptionsMenu(true);
        View rootView = inflater.inflate(R.layout.movie_display_fragment, container, false);
        movieGridView = (GridView) rootView.findViewById(R.id.gv_movie_display);
        return rootView;
    }

    private void initMovieGrid() {
        movieAdapter adapter = new movieAdapter(getActivity(), movieDataList);
        adapter.notifyDataSetChanged();
        movieGridView.setAdapter(adapter);
        movieGridView.smoothScrollToPosition(index);
        movieGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if (clickListener != null)
                    clickListener.clickOnItem(position);

            }
        });
    }
}
public class MainActivity extends AppCompatActivity implements clickInterfaceHelper {

    //...

    MovieGridFragment mFragment;

    //...
mFragment = new MovieGridFragment();
fragment.setClickListener(this);
getSupportFragmentManager().beginTransaction()
        .add(R.id.activity_container, fragment).commit();
mFragment.setMovieDataList(movieDataList);