我已经经历了很多关于将主要ID从一个表传递到新活动的其他帖子,我尝试了几种不同的方法而没有任何成功。我目前认为我正在传递它,但实际上没有任何内容出现在下一个Activity中。以下是我想要完成的内容的概要。
如果用户创建新联盟,则会获得主要ID(1)。用户单击新创建的联盟,现在他们可以选择创建保龄球。当然,Bowler可以属于许多联赛,所以我希望能够将联盟ID写入Bowler牌桌,这样我就可以选择仅仅联赛Id = 1并且仅显示与联盟相关联的投球手。
MainActivity
//On Long Click On The RecyclerView Item An Alert Dialog Is Opened With The Option To Choose Edit/Delete
recyclerView.addOnItemTouchListener(new RecyclerTouchListener(this,
recyclerView, new RecyclerTouchListener.ClickListener() {
@Override
public void onClick(View view, final int position) {
int leagueId = leaguesList.get( position ).getId();
Intent myIntent = new Intent(getBaseContext(), Main2Activity.class);
myIntent.putExtra("value1", leagueId);
startActivity(myIntent);
//Intent myIntent = new Intent(getApplicationContext(), BowlerActivity.class);
//startActivity(myIntent);
}
@Override
public void onLongClick(View view, int position) {
showActionsDialog(position);
}
}));
}
Main2Activity
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.league_id );
Toolbar toolbar = (Toolbar) findViewById( R.id.toolbar );
setSupportActionBar( toolbar );
String savedExtra = getIntent().getStringExtra( "value1" );
TextView myText = (TextView) findViewById(R.id.tvLeagueId);
final String s = myText.toString();
myText.setText(savedExtra);
}
}
联赛班级
public static final String TABLE_NAME = "leagues";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_TIMESTAMP = "timestamp";
private int id;
private String name;
private String timestamp;
// Create table SQL query
public static final String CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + "("
+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ COLUMN_NAME + " TEXT,"
+ COLUMN_TIMESTAMP + " DATETIME DEFAULT CURRENT_TIMESTAMP"
+ ")";
public League() {
}
public League(int id, String name, String timestamp) {
this.id = id;
this.name = name;
this.timestamp = timestamp;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTimestamp() {
return timestamp;
}
public void setId(int id) {
this.id = id;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
}
保龄球课
public static final String TABLE_NAME = "Bowlers";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_LEAGUE_ID = "league_id";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_TIMESTAMP = "timestamp";
private int id;
private int league_id;
private String name;
private String timestamp;
// Create table SQL query
public static final String CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + "("
+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ COLUMN_LEAGUE_ID + " INTEGER,"
+ COLUMN_NAME + " TEXT,"
+ COLUMN_TIMESTAMP + " DATETIME DEFAULT CURRENT_TIMESTAMP"
+ ")";
public Bowler() {
}
public Bowler(int id, int league_id, String name, String timestamp) {
this.id = id;
this.league_id = league_id;
this.name = name;
this.timestamp = timestamp;
}
public int getId() {
return id;
}
public int getLeagueId() {return league_id;}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTimestamp() {
return timestamp;
}
public void setId(int id) {
this.id = id;
}
public void setLeagueId(int league_id) {
this.league_id = league_id;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
}
非常感谢任何指导。
答案 0 :(得分:0)
我相信你的问题是你要发送一个整数但是试图获取一个字符串,当你应该检索一个整数时。因此你应该使用: -
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.league_id );
Toolbar toolbar = (Toolbar) findViewById( R.id.toolbar );
setSupportActionBar( toolbar );
//String savedExtra = getIntent().getStringExtra( "value1" ); <<<< COMMENTED OUT
String savedextra = String.valueOf(getIntent().getIntExtra("value1",-1)); //<<<< ADDED
TextView myText = (TextView) findViewById(R.id.tvLeagueId);
final String s = myText.toString();
myText.setText(savedExtra);
}
}
即。 String savedextra = String.valueOf(getIntent().getIntExtra("value1",-1));
代替String savedExtra = getIntent().getStringExtra( "value1" );