2017-06-14 54 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

相关问题