Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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
Android 单击“向上”按钮后返回“活动”时,ListView将消失_Android_Listview_Parse Platform - Fatal编程技术网

Android 单击“向上”按钮后返回“活动”时,ListView将消失

Android 单击“向上”按钮后返回“活动”时,ListView将消失,android,listview,parse-platform,Android,Listview,Parse Platform,我正在使用Parse.com在我的应用程序的第二个活动中填充ListView。单击ListView中的项目将打开第三个活动。问题是,当使用“向上”按钮返回第二个活动时,ListView消失了。由于某些原因,使用“后退”按钮时不会发生此行为。此外,在第二个活动中仅使用普通查询时也不会发生这种情况。关于这个查询。whereEqualsTodepartment,department line正在处理整个问题 第一项活动: public class MainActivity extends Action

我正在使用Parse.com在我的应用程序的第二个活动中填充ListView。单击ListView中的项目将打开第三个活动。问题是,当使用“向上”按钮返回第二个活动时,ListView消失了。由于某些原因,使用“后退”按钮时不会发生此行为。此外,在第二个活动中仅使用普通查询时也不会发生这种情况。关于这个查询。whereEqualsTodepartment,department line正在处理整个问题

第一项活动:

public class MainActivity extends ActionBarActivity {

private Button mMEButton;
private Button mCEButton;

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

    mMEButton = (Button)findViewById(R.id.meButton);
    mCEButton = (Button)findViewById(R.id.ceButton);



    mMEButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, ProfessorsActivity.class);
            intent.putExtra("department", "ME");
            startActivity(intent);
        }
    });

    mCEButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, ProfessorsActivity.class);
            intent.putExtra("department", "CE");
            startActivity(intent);
        }
    });
}
public class ProfessorsActivity extends ActionBarActivity {

private ParseQueryAdapter<ParseObject> adapter;

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

    Intent intent = getIntent();
    final String department = intent.getStringExtra("department");

    ParseQueryAdapter.QueryFactory<ParseObject> factory =
            new ParseQueryAdapter.QueryFactory<ParseObject>() {
                public ParseQuery create() {
                    ParseQuery query = new ParseQuery("Professor");
                    query.whereEqualTo("department", department);
                    return query;
                }
            };

    adapter = new ParseQueryAdapter<ParseObject>(this, factory) {
        @Override
        public View getItemView(ParseObject professor, View v, ViewGroup parent) {
            if (v == null) {
                v = View.inflate(getContext(), R.layout.professor_item, null);
            }
            TextView contentView = (TextView) v.findViewById(R.id.professorNameTextView);
            contentView.setText(professor.getString("lastName") + ", " + professor.getString("firstName"));
            return v;
        }
    };
    //adapter.setTextKey("lastName");
    ListView listView = (ListView) findViewById(R.id.listView);
    listView.setAdapter(adapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            final ParseObject tappedProfessor = adapter.getItem(position);
            String professorId = tappedProfessor.getObjectId();

            Intent intent = new Intent(ProfessorsActivity.this, OfficeHoursActivity.class);
            intent.putExtra("professorId", professorId);
            startActivity(intent);
        }
    });
}
public class OfficeHoursActivity extends ActionBarActivity {

private TextView mNameTextView;
private TextView mTimeTextView1;
private TextView mDaysTextView1;
private TextView mTimeTextView2;
private TextView mDaysTextView2;

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

    Intent intent = getIntent();
    String professorId = intent.getStringExtra("professorId");

    mNameTextView = (TextView) findViewById(R.id.professorName);
    mTimeTextView1 = (TextView) findViewById(R.id.officeHourTime1);
    mDaysTextView1 = (TextView) findViewById(R.id.officeHourDays1);
    mTimeTextView2 = (TextView) findViewById(R.id.officeHourTime2);
    mDaysTextView2 = (TextView) findViewById(R.id.officeHourDays2);


    mNameTextView.setVisibility(INVISIBLE);
    mTimeTextView1.setVisibility(INVISIBLE);
    mDaysTextView1.setVisibility(INVISIBLE);
    mTimeTextView2.setVisibility(INVISIBLE);
    mDaysTextView2.setVisibility(INVISIBLE);


    ParseQuery<ParseObject> query = ParseQuery.getQuery("Professor");

    // Retrieve the object by id
    query.getInBackground(professorId, new GetCallback<ParseObject>() {
        public void done(ParseObject currentProfessor, ParseException e) {
            if (e == null) {
                mNameTextView.setText(currentProfessor.getString("lastName") + ", " + currentProfessor.getString("firstName"));
                mTimeTextView1.setText(currentProfessor.getString("start1") + " - " + currentProfessor.getString("end1"));
                mDaysTextView1.setText(currentProfessor.getString("days1"));

                mNameTextView.setVisibility(VISIBLE);
                mTimeTextView1.setVisibility(VISIBLE);
                mDaysTextView1.setVisibility(VISIBLE);

                if (currentProfessor.getString("start2") != null) {
                    mTimeTextView2.setText(currentProfessor.getString("start2") + " - " + currentProfessor.getString("end2"));
                    mDaysTextView2.setText(currentProfessor.getString("days2"));

                    mTimeTextView2.setVisibility(VISIBLE);
                    mDaysTextView2.setVisibility(VISIBLE);
                }
            } else {
                //something went wrong
            }
        }
    });
第二项活动:

public class MainActivity extends ActionBarActivity {

private Button mMEButton;
private Button mCEButton;

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

    mMEButton = (Button)findViewById(R.id.meButton);
    mCEButton = (Button)findViewById(R.id.ceButton);



    mMEButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, ProfessorsActivity.class);
            intent.putExtra("department", "ME");
            startActivity(intent);
        }
    });

    mCEButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, ProfessorsActivity.class);
            intent.putExtra("department", "CE");
            startActivity(intent);
        }
    });
}
public class ProfessorsActivity extends ActionBarActivity {

private ParseQueryAdapter<ParseObject> adapter;

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

    Intent intent = getIntent();
    final String department = intent.getStringExtra("department");

    ParseQueryAdapter.QueryFactory<ParseObject> factory =
            new ParseQueryAdapter.QueryFactory<ParseObject>() {
                public ParseQuery create() {
                    ParseQuery query = new ParseQuery("Professor");
                    query.whereEqualTo("department", department);
                    return query;
                }
            };

    adapter = new ParseQueryAdapter<ParseObject>(this, factory) {
        @Override
        public View getItemView(ParseObject professor, View v, ViewGroup parent) {
            if (v == null) {
                v = View.inflate(getContext(), R.layout.professor_item, null);
            }
            TextView contentView = (TextView) v.findViewById(R.id.professorNameTextView);
            contentView.setText(professor.getString("lastName") + ", " + professor.getString("firstName"));
            return v;
        }
    };
    //adapter.setTextKey("lastName");
    ListView listView = (ListView) findViewById(R.id.listView);
    listView.setAdapter(adapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            final ParseObject tappedProfessor = adapter.getItem(position);
            String professorId = tappedProfessor.getObjectId();

            Intent intent = new Intent(ProfessorsActivity.this, OfficeHoursActivity.class);
            intent.putExtra("professorId", professorId);
            startActivity(intent);
        }
    });
}
public class OfficeHoursActivity extends ActionBarActivity {

private TextView mNameTextView;
private TextView mTimeTextView1;
private TextView mDaysTextView1;
private TextView mTimeTextView2;
private TextView mDaysTextView2;

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

    Intent intent = getIntent();
    String professorId = intent.getStringExtra("professorId");

    mNameTextView = (TextView) findViewById(R.id.professorName);
    mTimeTextView1 = (TextView) findViewById(R.id.officeHourTime1);
    mDaysTextView1 = (TextView) findViewById(R.id.officeHourDays1);
    mTimeTextView2 = (TextView) findViewById(R.id.officeHourTime2);
    mDaysTextView2 = (TextView) findViewById(R.id.officeHourDays2);


    mNameTextView.setVisibility(INVISIBLE);
    mTimeTextView1.setVisibility(INVISIBLE);
    mDaysTextView1.setVisibility(INVISIBLE);
    mTimeTextView2.setVisibility(INVISIBLE);
    mDaysTextView2.setVisibility(INVISIBLE);


    ParseQuery<ParseObject> query = ParseQuery.getQuery("Professor");

    // Retrieve the object by id
    query.getInBackground(professorId, new GetCallback<ParseObject>() {
        public void done(ParseObject currentProfessor, ParseException e) {
            if (e == null) {
                mNameTextView.setText(currentProfessor.getString("lastName") + ", " + currentProfessor.getString("firstName"));
                mTimeTextView1.setText(currentProfessor.getString("start1") + " - " + currentProfessor.getString("end1"));
                mDaysTextView1.setText(currentProfessor.getString("days1"));

                mNameTextView.setVisibility(VISIBLE);
                mTimeTextView1.setVisibility(VISIBLE);
                mDaysTextView1.setVisibility(VISIBLE);

                if (currentProfessor.getString("start2") != null) {
                    mTimeTextView2.setText(currentProfessor.getString("start2") + " - " + currentProfessor.getString("end2"));
                    mDaysTextView2.setText(currentProfessor.getString("days2"));

                    mTimeTextView2.setVisibility(VISIBLE);
                    mDaysTextView2.setVisibility(VISIBLE);
                }
            } else {
                //something went wrong
            }
        }
    });
第三项活动:

public class MainActivity extends ActionBarActivity {

private Button mMEButton;
private Button mCEButton;

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

    mMEButton = (Button)findViewById(R.id.meButton);
    mCEButton = (Button)findViewById(R.id.ceButton);



    mMEButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, ProfessorsActivity.class);
            intent.putExtra("department", "ME");
            startActivity(intent);
        }
    });

    mCEButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, ProfessorsActivity.class);
            intent.putExtra("department", "CE");
            startActivity(intent);
        }
    });
}
public class ProfessorsActivity extends ActionBarActivity {

private ParseQueryAdapter<ParseObject> adapter;

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

    Intent intent = getIntent();
    final String department = intent.getStringExtra("department");

    ParseQueryAdapter.QueryFactory<ParseObject> factory =
            new ParseQueryAdapter.QueryFactory<ParseObject>() {
                public ParseQuery create() {
                    ParseQuery query = new ParseQuery("Professor");
                    query.whereEqualTo("department", department);
                    return query;
                }
            };

    adapter = new ParseQueryAdapter<ParseObject>(this, factory) {
        @Override
        public View getItemView(ParseObject professor, View v, ViewGroup parent) {
            if (v == null) {
                v = View.inflate(getContext(), R.layout.professor_item, null);
            }
            TextView contentView = (TextView) v.findViewById(R.id.professorNameTextView);
            contentView.setText(professor.getString("lastName") + ", " + professor.getString("firstName"));
            return v;
        }
    };
    //adapter.setTextKey("lastName");
    ListView listView = (ListView) findViewById(R.id.listView);
    listView.setAdapter(adapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            final ParseObject tappedProfessor = adapter.getItem(position);
            String professorId = tappedProfessor.getObjectId();

            Intent intent = new Intent(ProfessorsActivity.this, OfficeHoursActivity.class);
            intent.putExtra("professorId", professorId);
            startActivity(intent);
        }
    });
}
public class OfficeHoursActivity extends ActionBarActivity {

private TextView mNameTextView;
private TextView mTimeTextView1;
private TextView mDaysTextView1;
private TextView mTimeTextView2;
private TextView mDaysTextView2;

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

    Intent intent = getIntent();
    String professorId = intent.getStringExtra("professorId");

    mNameTextView = (TextView) findViewById(R.id.professorName);
    mTimeTextView1 = (TextView) findViewById(R.id.officeHourTime1);
    mDaysTextView1 = (TextView) findViewById(R.id.officeHourDays1);
    mTimeTextView2 = (TextView) findViewById(R.id.officeHourTime2);
    mDaysTextView2 = (TextView) findViewById(R.id.officeHourDays2);


    mNameTextView.setVisibility(INVISIBLE);
    mTimeTextView1.setVisibility(INVISIBLE);
    mDaysTextView1.setVisibility(INVISIBLE);
    mTimeTextView2.setVisibility(INVISIBLE);
    mDaysTextView2.setVisibility(INVISIBLE);


    ParseQuery<ParseObject> query = ParseQuery.getQuery("Professor");

    // Retrieve the object by id
    query.getInBackground(professorId, new GetCallback<ParseObject>() {
        public void done(ParseObject currentProfessor, ParseException e) {
            if (e == null) {
                mNameTextView.setText(currentProfessor.getString("lastName") + ", " + currentProfessor.getString("firstName"));
                mTimeTextView1.setText(currentProfessor.getString("start1") + " - " + currentProfessor.getString("end1"));
                mDaysTextView1.setText(currentProfessor.getString("days1"));

                mNameTextView.setVisibility(VISIBLE);
                mTimeTextView1.setVisibility(VISIBLE);
                mDaysTextView1.setVisibility(VISIBLE);

                if (currentProfessor.getString("start2") != null) {
                    mTimeTextView2.setText(currentProfessor.getString("start2") + " - " + currentProfessor.getString("end2"));
                    mDaysTextView2.setText(currentProfessor.getString("days2"));

                    mTimeTextView2.setVisibility(VISIBLE);
                    mDaysTextView2.setVisibility(VISIBLE);
                }
            } else {
                //something went wrong
            }
        }
    });

默认情况下,“向上”按钮创建父活动的新实例。 如果希望它像“后退”按钮一样工作,只需覆盖OfficeHoursActivity中的OnOptions ItemSelected并执行以下操作:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if(item.getItemId() == android.R.id.home) {
        onBackPressed();
        return true;
    }

    return super.onOptionsItemSelected(item);
}

现在检查。。也许你的问题会解决的

我通过将以下标记添加到AndroidManifest.xml文件中的第二个活动中,解决了这个问题

android:launchMode="singleTop"

这将防止单击“向上”按钮时重新创建活动。

将Listview代码放入onresume方法中。这样,从上一个活动返回到Listview活动时,您就可以将数据再次输入Listview了,谢谢!这是另一个有效的答案。我更改了第二个活动,使其具有onNewIntent方法。单顶启动模式不再足以维护列表。此代码允许我使用onNewIntent方法并在活动中维护列表。