我的应用程序有一个包含50个按钮的布局,用户可以触摸并更改文本和颜色。 信息存储在数据库中,以便将来保持更改。 我正在使用ID但是在编译应用程序并且R类更改所有int ID时会出现问题。
这是代码
public class setTableActivity extends ActionBarActivity {
static int clickedButtonViewId; // Declare TextView as class level member field
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_set_table);
MySQLiteHelper db = new MySQLiteHelper(this);
//Get all materie inside database
List<Materia> materia = db.getAllMaterie();
//change all TextView inputed from user
if(materia.isEmpty()){
//do nothing
}else {
for (Materia mat : materia) {
//Change all the Button with values stored inside the database
final Button changedButton = (Button) findViewById(mat.getID());
changedButton.setText(mat.getMateria());
changedButton.setBackgroundColor(mat.getColor());
}
}
}
//Take back data from ActivityAddMateria
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 1) {
if (resultCode == RESULT_OK) {
MySQLiteHelper db = new MySQLiteHelper(this);
String result = data.getStringExtra("result"); //Take the materia from Dialog
int color = data.getIntExtra("color", 1); //Take the color from Dialog
//Here i need to recognize row and column
db.addMateriaToDb(new Materia(clickedButtonViewId, result, color));
final Button clickedtextView = (Button) findViewById(clickedButtonViewId);
clickedtextView.setText(result);
clickedtextView.setBackgroundColor(color);
}
if (resultCode == RESULT_CANCELED) {
//Nessuna materia inserita
}
}
}//onActivityResult
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_set_table, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) {
case R.id.draw_orario:
//addMateria();
MySQLiteHelper db = new MySQLiteHelper(this);
db.deleteMateria();
//This for refresh the acrivity after deleted all objects
Intent intent = getIntent();
finish();
startActivity(intent);
return true;
case R.id.action_settings:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void addMateria(View v){
//To get ID of your TextView do this
clickedButtonViewId = v.getId();
//StartActivityForResult perche mi aspetto la materia inserita dall'altra activity
Intent myIntent = new Intent(setTableActivity.this, ActivityAddMateria.class);
setTableActivity.this.startActivityForResult(myIntent, 1);
onStop();
}
}
正如您所看到的,我获取了所选Button
的ID,更改了文本和颜色,并保存了ID,文本和颜色。
如果我再次编译应用程序,所有的ID都会在R类中发生变化,而我的工作也没用。
我需要一些东西来查找已更改的视图,并在DB中存储已更改的按钮。
我尝试使用android:tag="tag1"
,但findViewWithTag不起作用。
一些建议?
活动的XML
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/blue_orario"
tools:context="com.ddz.diarioscolastico.setTableActivity">
<TableRow
android:id="@+id/giorni"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Lun"
android:id="@+id/textView15"
android:layout_column="1" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Mar"
android:id="@+id/textView16"
android:layout_column="2" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Mer"
android:id="@+id/textView17"
android:layout_column="3" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Gio"
android:id="@+id/textView18"
android:layout_column="4" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Ven"
android:id="@+id/textView19"
android:layout_column="5" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Sab"
android:id="@+id/textView20"
android:layout_column="6" />
</TableRow>
<ScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="1"
android:id="@+id/ora1"
android:layout_column="0" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m11"
android:tag="m11"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="1" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m12"
android:tag="m12"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="2" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m13"
android:tag="m13"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="3" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m14"
android:tag="m14"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="4" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m15"
android:tag="m15"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="5" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m16"
android:tag="m16"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="6" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="2"
android:id="@+id/textView22"
android:layout_column="0" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m21"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="1" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m22"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="2" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m23"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="3" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m24"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="4" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m25"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="5" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m26"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="6" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="3"
android:id="@+id/ora_3"
android:layout_column="0" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m31"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="1" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m32"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="2" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m33"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="3" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m34"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="4" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m35"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="5" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m36"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="6" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="4"
android:id="@+id/ora_4"
android:layout_column="0" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m41"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="1" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m42"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="2" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m43"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="3" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m44"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="4" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m45"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="5" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m46"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="6" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="5"
android:id="@+id/ora_5"
android:layout_column="0" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m51"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="1" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m52"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="2" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m53"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="3" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m54"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="4" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m55"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="5" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m56"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="6" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="6"
android:id="@+id/ora_6"
android:layout_column="0" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m61"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="1" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m62"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="2" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m63"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="3" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m64"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="4" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m65"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="5" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m66"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="6" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="7"
android:id="@+id/ora_7"
android:layout_column="0" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m71"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="1" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m72"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="2" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m73"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="3" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m74"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="4" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m75"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="5" />
<Button
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_weight="1"
android:text="@string/new_button"
android:id="@+id/m76"
android:onClick="addMateria"
android:textSize="12sp"
android:layout_column="6" />
</TableRow>
</LinearLayout>
</ScrollView>
</TableLayout>
答案 0 :(得分:0)
只需保存按钮的名称,然后使用以下命令按名称获取按钮的资源ID:
int resId = getResources().getIdentifier(resourceName, "id", getPackageName());