Can';无法在Android中正确处理意图

Can';无法在Android中正确处理意图,android,android-intent,Android,Android Intent,我正在开发一个数据输入系统,用户可以在其中保存、搜索和更新数据。在这个活动中,我使用EditText、微调器和按钮(搜索诊所名称)。当用户填写完这些编辑文本和微调器后,他可以使用按钮搜索诊所。此按钮将触发另一个活动的意图 另一个活动有一个EditText(带有文本过滤器,可以搜索诊所)和一个ListView,它在搜索时显示结果。当结果显示时,用户可以单击ListView项目,该项目将触发上一个活动,并将诊所名称填写到分配给它的EditText 我的问题是,当用户单击ListView项并转到上一个

我正在开发一个数据输入系统,用户可以在其中保存、搜索和更新数据。在这个活动中,我使用EditText、微调器和按钮(搜索诊所名称)。当用户填写完这些编辑文本和微调器后,他可以使用按钮搜索诊所。此按钮将触发另一个活动的意图

另一个活动有一个EditText(带有文本过滤器,可以搜索诊所)和一个ListView,它在搜索时显示结果。当结果显示时,用户可以单击ListView项目,该项目将触发上一个活动,并将诊所名称填写到分配给它的EditText

我的问题是,当用户单击ListView项并转到上一个活动时,来自EditText和微调器的数据被清除

我希望发生的是,当我搜索诊所名称并转到另一个活动时,那些已经填写的数据不会被清除或丢失

MainActivity.java

    //Getting clinic address
    txt_DClinic.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

            Intent myIntent = new Intent(getApplicationContext(), SearchClinicActivity.class);
            startActivity(myIntent);

        }

    });
    listView.setOnItemClickListener(new OnItemClickListener() {

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

            TextView tv_clinicId = (TextView) view.findViewById(R.id.textviewId);
            String clinicID = tv_clinicId.getText().toString();

            Intent intent = new Intent(view.getContext(), MainActivity.class);
            intent.putExtra("clinic_id", clinicID);
            intent.putExtra("signal", "2");
            intent.putExtra("from", "SearchClinic");
            intent.putExtra("LoginOrSearch", "ImSearchClinic");
            finish();
            view.getContext().startActivity(intent);
        }

    }); 
SearchClinicActivity.java

    //Getting clinic address
    txt_DClinic.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

            Intent myIntent = new Intent(getApplicationContext(), SearchClinicActivity.class);
            startActivity(myIntent);

        }

    });
    listView.setOnItemClickListener(new OnItemClickListener() {

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

            TextView tv_clinicId = (TextView) view.findViewById(R.id.textviewId);
            String clinicID = tv_clinicId.getText().toString();

            Intent intent = new Intent(view.getContext(), MainActivity.class);
            intent.putExtra("clinic_id", clinicID);
            intent.putExtra("signal", "2");
            intent.putExtra("from", "SearchClinic");
            intent.putExtra("LoginOrSearch", "ImSearchClinic");
            finish();
            view.getContext().startActivity(intent);
        }

    }); 
listView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView列表视图、视图、,
内部位置,长id){
TextView tv_clinicId=(TextView)view.findViewById(R.id.textviewId);
String clinicID=tv_clinicID.getText().toString();
Intent Intent=新的Intent(view.getContext(),MainActivity.class);
意图。putExtra(“诊所id”,clinicID);
意向。额外(“信号”、“2”);
意图。putExtra(“来自”、“搜索诊所”);
意向。putExtra(“LoginSearch”、“ImSearchClinic”);
完成();
view.getContext().startActivity(intent);
}
}); 
调用
setSaveEnabled(true)
或将
android:saveEnabled=“true”
添加到要保留数据的视图布局中

MyEditText.setSaveEnabled(true);



单击列表项和打开意图时,微调器或任何其他需要保留数据的视图也是如此。将标志设置为intent

intent.setFlag(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
看看它是否有效

如果它不比尝试一件事是。你在故意传递额外信息。此时,传递edittext和微调器项目编号的值。并且在主活动的onCreate方法中,用那个额外的设置edittext的文本。并设置微调器的选定值

edtTxt.settext(getIntent().getExtras().get("Text"));
sp.setSelection(getIntent().getExtras().get("Value"));

希望对你有帮助

你能给我一些代码吗?我不容易理解,因为我是android新手。我如何以及在哪里可以覆盖onStateInstance?你能重新表述你的答案吗,我不理解。谢谢这很容易,我的朋友。首先,把旗子放在你的意图上。然后看看会发生什么??好的,然后移除标志。按照我在ans中所说的做。将edittext值和微调器值作为额外的目的传递。然后在MainActivity.java中接收它,并设置为edittext和spinner。您的意思是,从主活动中,我将edittext和spinner的值传递给搜索活动,然后再次传递给主活动?如果您没有将值存储在某个位置而不是“是”。但为什么单击listview项就返回mainactivity??我的意思是你已经搜索了诊所,点击列表视图,你就可以开始搜索为什么??