2017-06-14 55 views
0

我希望點擊的項目顯示在另一個活動中。第二個活動出現,但字符串沒有。我嘗試了其他方法,但第二個活動只是空白。 這裏是主要活動無法在另一個活動上顯示ListView上的項目

EditText TxtOne; 
Button btOne; 
ListView lisOne; 
ArrayList aL; 
ArrayAdapter<String> adapt; 

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

    TxtOne = (EditText) findViewById(R.id.TxtOne); 
    btOne = (Button) findViewById(R.id.btOne); 
    lisOne = (ListView) findViewById(R.id.lisOne); 

    aL = new ArrayList<String>(); 
    adapt = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,aL); 
    lisOne.setAdapter(adapt); 
    onBClick(); 
    lisOne.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { 
      Intent itemInfo = new Intent(MainActivity.this, secondActivity.class); 
      itemInfo.putExtra("Itemis",position); 
      startActivity(itemInfo); 

     } 
    }); 
} 

public void onBClick(){ 
    btOne.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      String InpItem = TxtOne.getText().toString(); 
      aL.add(InpItem); 
      adapt.notifyDataSetChanged(); 
     } 

    }); 
} 

以下是第二個活動

public class secondActivity extends AppCompatActivity { 
    TextView txt2; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_second); 

     Bundle passedData = getIntent().getExtras(); 
     txt2 = (TextView)findViewById(R.id.txt2); 
     txt2.setText(passedData.getString("Itemis")); 
    } 
} 

我看過其他類似的職位,但他們沒有工作。 有些人討論textView不在活動佈局中,因爲結果爲NULL。 textView處於活動佈局中,但仍不顯示該項目。 解決方案任何人?

回答

0

在下面的監聽器,您要添加到position意圖itemInfo。這裏的位置是INT型的,所以,你應該做的getIntExtra()來檢索整型數據,而不是getStringExtra()

lisOne.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { 
     Intent itemInfo = new Intent(MainActivity.this, secondActivity.class); 
     itemInfo.putExtra("Itemis",position); //position is INT value!! 
     startActivity(itemInfo); 
    } 
}); 

所以,你應該做的 -

getIntExtra(字符串,INT defaultValue); //這將返回位置的整數值。

替換這兩條線 -

txt2 = (TextView)findViewById(R.id.txt2); 
txt2.setText(Integer.toString(getIntent().getExtras().getIntExtra("Itemis",0))); //getting int value in second activity and converting into string for displaying 

注 - 你應該使用getStringExtra("Itemis")從意圖獲取字符串數據。不是getString("Itemis")

請參閱Intent Docs Page瞭解有關從意圖設置和檢索值的更多詳細信息。

0

您正在傳遞和閱讀額外資訊不正確。執行以下操作:

itemInfo.putExtra("Itemis", position);txt2.setText(String.valueof(getIntent().getIntExtra("Itemis")));

+0

呃,你插入一個額外的'int'類型並將它讀回爲'String'?這不可行! – Nerd

+0

對不起,沒有注意到。固定! –

+0

它說'putIntExtra'無法解決。 – RajTG

相關問題