我试图将值从一个类发送到另一个类并显示它。然而,这些值不会显示,并且我得到一个空白窗口。它没有显示任何红色错误,但在logcat中你可以找到一行文字说:Key playerList expected String但value是java.lang.Integer。所以我想由于某些原因我得到了整数而不是字符串。我不知道为什么会发生这种情况,虽然我知道我知道问题出在哪里。
所以这是我的第一个Activity,用户将字符串和广告输入到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 :(得分:0)
问题非常简单:
当你启动意图时,你正在调用pradetiZaidima.putExtra("playerList", adapter.getPosition(obj));
,它会在适配器中返回obj
的位置(Integer
)。
然后在String myVal = recdData.getString("playerList");
您希望收到String
答案 1 :(得分:0)
替换
pradetiZaidima.putExtra("playerList", adapter.getPosition(obj));
与
pradetiZaidima.putExtra("playerList", obj);
因为在下一个活动中,您正在寻找带有readData.getString("playerList");