Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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 Can';是否不将listview的位置传递给第二个活动?_Android_Eclipse_Listview - Fatal编程技术网

Android Can';是否不将listview的位置传递给第二个活动?

Android Can';是否不将listview的位置传递给第二个活动?,android,eclipse,listview,Android,Eclipse,Listview,嗨,我创建了一个数据库,其中存储了一些编辑文本。我有三个活动A、B和C。活动A在列表视图中显示存储的值。单击活动A中的列表视图项时,它会将其位置和存储的数据传递给活动B,其中活动B将其显示为简单文本,无法编辑。现在我想把这些数据从活动B传递到活动C,在那里可以编辑。如何通过AcitCity B将列表视图位置从A传递到C 活动A public class UserActivity extends Activity implements OnItemClickListener { priv

嗨,我创建了一个数据库,其中存储了一些编辑文本。我有三个活动A、B和C。活动A在列表视图中显示存储的值。单击活动A中的列表视图项时,它会将其位置和存储的数据传递给活动B,其中活动B将其显示为简单文本,无法编辑。现在我想把这些数据从活动B传递到活动C,在那里可以编辑。如何通过AcitCity B将列表视图位置从A传递到C

活动A

public class UserActivity extends Activity implements OnItemClickListener {

    private ListAdapter users;
    private ListView lista;
    private AccessModel data;
    private ArrayList<User> query;
    private LinearLayout empty_data;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);     
        requestWindowFeature(Window.FEATURE_ACTION_BAR);
        setContentView(R.layout.listusers);
        lista = (ListView) findViewById(R.id.lstusers);
        empty_data= (LinearLayout) findViewById(R.id.empty_data);
        data = new AccessModel(this);       
    }


    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();       
         query = data.listUser();

         if(query.size()>0)
           empty_data.setVisibility(View.GONE);
         else
           empty_data.setVisibility(View.VISIBLE);

         users = new ListAdapter(this, query);
         lista.setAdapter(users);
         lista.setOnItemClickListener(this);

    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        // TODO Auto-generated method stub
        getMenuInflater().inflate(R.menu.optionsbar, menu);
        return super.onPrepareOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        switch (item.getItemId()) {
            case R.id.adduser:
                Intent i = new Intent(this, RegisterUser.class);
                startActivity(i);
                return true;                
            default:
                return super.onOptionsItemSelected(item);
        }

    }


    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        // TODO Auto-generated method stub      
        User u = (User) query.get(position);
        Intent i = new Intent(UserActivity.this, ViewPatientData.class);
        i.putExtra(getString(R.string.valuesId), String.valueOf(u.getId()));
        startActivity(i);       
    }




}
活性C

 @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();

        Bundle v = getIntent().getExtras();

        if(v==null){
            back();
            return;
        }

        userId = v.getString(getString(R.string.valuesId));     
        loadData(userId);

    }

    private void loadData(String id){

            User u = (User) data.getUser(id);
            Toast.makeText(this, u.getName(), Toast.LENGTH_LONG).show();            
            name.setText(u.getName().toString());           
            age.setText(u.getAge());
            gender.setText(u.getGender());
            height.setText(u.getHeight());
            weight.setText(u.getWeight());
            dateofbirth.setText(u.getDateofbirth());
            religion.setText(u.getReligion());          
            maritalstatus.setText(u.getMaritalstatus());
            dateofadmission.setText(u.getDateofadmission());
            contact.setText(u.getContact());
            emergencycontact.setText(u.getEmergencycontact());
            email.setText(u.getEmail());
            occupation.setText(u.getOccupation());          
            bloodtype.setText(u.getBloodtype());
            refferedvia.setText(u.getRefferedvia());
            address.setText(u.getAddress());


    }


    private void updateUser(String id){
        String[] ids = {id};
        try{
            data.updateUser(ids,name.getText().toString(), age.getText().toString(), gender.getText().toString(), height.getText().toString(), weight.getText().toString(), dateofbirth.getText().toString()
                    ,religion.getText().toString(), maritalstatus.getText().toString(), dateofadmission.getText().toString(), address.getText().toString(), contact.getText().toString(), emergencycontact.getText().toString()
                    ,email.getText().toString(), occupation.getText().toString(), bloodtype.getText().toString(), refferedvia.getText().toString());                        
            Toast.makeText(this, getString(R.string.good), Toast.LENGTH_LONG).show();           
        }catch(Exception e){
            Toast.makeText(this, getString(R.string.error), Toast.LENGTH_LONG).show();
        }   
    }

    private void deleteUser(String id){
        String[] ids = {id};
        try{
            data.deleteUser(ids);                       
            Toast.makeText(this, getString(R.string.good), Toast.LENGTH_LONG).show();
            back();
        }catch(Exception e){
            Toast.makeText(this, getString(R.string.error), Toast.LENGTH_LONG).show();
        }   
    }



    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch(v.getId()){
        case R.id.btupdate:
            updateUser(userId);
            break;
        case R.id.btdelete:
            deleteUser(userId);
            break;
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        switch (item.getItemId()) {
            case android.R.id.home:
                back();
                return true;                
            default:
                return super.onOptionsItemSelected(item);
        }

    }

    private void back(){
        Intent i = new Intent(this, UserActivity.class);
        startActivity(i);
    }

}

您必须在变量中从活动B中的意图束中检索该值,然后在新的意图束中传递该值,该值将转到活动C

您已经得到了答案。这与您在活动B中添加到意图中的额外id非常相似

在A中,执行以下操作:

Intent i = new Intent(ActivityA.this, ActivityB.class);
i.putExtra(getString(R.string.valuesId), String.valueOf(u.getId()));
i.putExtra("position", position);
在B中,将其提取为:

Bundle extras = getIntent().getExtras();
int position = extras.getInt("position");
Intent i = new Intent(ActivityB.this, ActivityC.class);
i.putExtra(getString(R.string.valuesId), String.valueOf(u.getId()));
i.putExtra("position", position);
在C中,如前所述提取位置:

Bundle extras = getIntent().getExtras();
int position = extras.getInt("position");

为什么?这是Android希望您在活动之间传递数据的方式。请查看上面的编辑代码,并告诉我您提供的这些代码的放置位置。在开始执行startActivity(i)之前,这些代码行将转到何处。因此,在A中,它将位于onItemClick()方法中。在B和C中,它将位于back()方法中。只需添加我已经编写的代码行,您还没有,您应该可以继续。不为我工作..仍然给出错误…在活动B中,我必须将此代码放在case R.id.btedit之后:我认为在活动C中,back()方法在我看来不是正确的位置。。。可能是其在简历活动中????
Bundle extras = getIntent().getExtras();
int position = extras.getInt("position");