2015-01-23 2 views
0

임 하나의 클래스에서 다른 클래스로 값을 보내고 표시하려고합니다. 그러나 th 값은 표시되지 않습니다. 그리고 메신저는 빈 창을 띄게됩니다. 빨간색 오류는 보이지 않지만 logcat에서 텍스트 줄을 찾을 수 있습니다. Key playerList expected String이지만 값은 java.lang.Integer입니다. 그래서 나는 문자열 대신에 int를 얻는 이유가 무엇인지 추측한다. 내가 왜 그 일이 일어날 지 모르지만, 내가 어디에서 문제인지 알 수는있어.키 예상 문자열이지만 값이 java.lang.Integer (Arrayadapter 값)

사용자가 문자열 및 광고를 listview (어댑터)에 입력하는 첫 번째 활동입니다. 내가 입력 : 표시 할이 작업에서는

 public class ZaidejaiActivity extends ActionBarActivity implements View.OnClickListener{ 
    public Button mBtnIstrinti; 
    public Button mBtnPrideti; 
    public Button mBtnPradeti; 
    public EditText mYrasytiVarda; 
    public ListView mZaidejai; 

    ArrayList<String> list = new ArrayList<String>(); 
    ArrayAdapter<String> adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_zaidejai); 
     mBtnPrideti = (Button)findViewById(R.id.pridėtiBtn); 
     mBtnPrideti.setOnClickListener(this); 
     mYrasytiVarda = (EditText)findViewById(R.id.VardoYrasymoBtn); 
     adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, list); 

     // set the mZaidejai variable to your list in the xml 

     mZaidejai=(ListView)findViewById(R.id.sarašas); 
     mZaidejai.setAdapter(adapter); 
     mZaidejai.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      // remove item from List. 



      @Override 
      public void onItemClick(AdapterView<?> parent, View view, final int position, long id) { 
        list.remove(position); 
       AlertDialog.Builder builder = new AlertDialog.Builder(ZaidejaiActivity.this); 
       builder.setMessage("Delete?"); 
       builder.setTitle("Confirm Action"); 
       builder.setPositiveButton("Delete", new DialogInterface.OnClickListener() 
       { 
        public void onClick(DialogInterface dialog, int id) 
        { 
           adapter.notifyDataSetChanged(); 
          } 
         //checked.clear(); 
        }); 
       builder.setNegativeButton("Cancel", null); 
       builder.create(); 
       builder.show(); 
      } 
     }); 
     mBtnPradeti = (Button)findViewById(R.id.žaistiBtn); 
     mBtnPradeti.setOnClickListener(new View.OnClickListener() { 


      @Override 
      public void onClick(View v) { 
        // count items 
       int i; 
       for (i = 0; i < adapter.getCount(); i++) { 
        String obj = adapter.getItem(i); 
        // send items to other activity 
        Intent pradetiZaidima = new Intent(v.getContext(), ZaidimasActivity.class); 
        pradetiZaidima.putExtra("playerList", adapter.getPosition(obj)); 
        startActivity(pradetiZaidima); 
       } 
      } 
     }); 

    }; 


    @Override 
    public void onClick(View v) { 
     String input = mYrasytiVarda.getText().toString(); 
     if(input.length() > 0) 
     { 
      // add string to the adapter, not the listview 
      adapter.add(input); 

      // no need to call adapter.notifyDataSetChanged(); as it is done by the adapter.add() method 
     }else{ 
      AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
      alertDialog.setTitle("Klaida:"); 
      alertDialog.setMessage("Blogai yrašytas vardas"); 
      alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
// here you can add functions 
       } 
      }); 

      alertDialog.show(); 
     } 
    } 

ZaidimasActivity이 ZaidejaiActivity를 확장

공용 클래스 {

public TextView mZaidejas; 
public TextView mKlausimas; 
public Button mKitasKlausimas; 

ArrayList<String> listas; 
ArrayAdapter<String> adapter; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_zaidimas); 

    Bundle recdData = getIntent().getExtras(); 
    String myVal = recdData.getString("playerList"); 


    //listas = getIntent().getExtras().getStringArrayList("playerList"); 


    mZaidejas = (TextView)findViewById(R.id.ZaidejoVardas); 
    mZaidejas.setText(myVal); 

} 

나는 코드의 잘못된 부분은 내가 어디 있는지 벌목이 항목을 다른 활동으로 보냅니다. pradetiZaidima.putExtra("playerList", adapter.getPosition(obj)); getposition 부분은 다른 것으로 바뀌었지만 건조한 모든 것은 빨간색으로 표시됩니다. 가장 좋은 해결책은 getList를 사용하는 것이지만 너무 빨갛다는 생각. 이견있는 사람?

답변

0

문제는 매우 간단합니다 :

당신이 어댑터 obj의 위치 (AN Integer)를 반환 pradetiZaidima.putExtra("playerList", adapter.getPosition(obj));를 호출하는 의도를 시작

.

그런 다음 String myVal = recdData.getString("playerList");에 당신은 String

0

이 다음 활동에서 당신이 readData.getString("playerList");

와 문자열 값을 찾고 있기 때문에

pradetiZaidima.putExtra("playerList", adapter.getPosition(obj)); 

pradetiZaidima.putExtra("playerList", obj); 

를 교체받을 것으로 예상된다

관련 문제