ABA


"|Android Studio| פונקציית Super - איך אני שולח Activity אחר?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #21071 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 21071
Tom_l 
חבר מתאריך 1.1.10
1696 הודעות
   11:06   10.01.15   
אל הפורום  
  |Android Studio| פונקציית Super - איך אני שולח Activity אחר?  
 
   היי,

ב-Activity בשם NewRecordActivity אני יוצר עצם מסוג Record שהמשתמש מכניס ערכים. לאחר מכן אני רוצה סה"כ לשלוח את העצם דרך רשימה מסוג Record ל-listView שנמצא ב-Activity בשם MainActivity.
במחלקה שיורשת מ-ArrayAdapter יש לי פונקציית Super, עכשיו אני יודע שהבעיה היא שם. כי בעצם אני מקבל ERROR:


Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference

הקוד המלא של קובץ NewRecordActivity.java:



package il.co.tomluz.thesmartweight;

import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;

public class NewRecordActivity extends ActionBarActivity {

EditText value_txt;
RadioGroup result_radioGroup;
RadioButton result_radioButton;
EditText date_txt;
List<Record> Records = new ArrayList<Record>();
ListView listView;

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

listView = (ListView) findViewById(R.id.record_listView);

Button newRecord_btn = (Button) findViewById(R.id.newRecord_btn);
newRecord_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
value_txt = (EditText) findViewById(R.id.value_editText);
result_radioGroup = (RadioGroup) findViewById(R.id.result_radioGroup);
int result_id = result_radioGroup.getCheckedRadioButtonId();
result_radioButton = (RadioButton) findViewById(result_id);
String result_txt = result_radioButton.getText().toString();
int result_int = getResultInt(result_txt);
date_txt = (EditText) findViewById(R.id.date_editText);
long date_timestamp = getDateTime(date_txt.getText().toString()).getTime();

Record new_record = new Record(value_txt.getText().toString(), result_int, date_timestamp);
addRecord(new_record);
/*RecordsDBHelper records_dbHelper = new RecordsDBHelper(getApplicationContext());
records_dbHelper.createRecord(new_record);*/
populateRecordList();
}
});
}
private Date getDateTime(String date_txt) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
try {
return dateFormat.parse(date_txt);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
private String getDateString(long timestamp) {
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(timestamp);
String date = DateFormat.format("dd/MM/yyyy", cal).toString();
return date;
}
private String getResultString(int result) {
if (result == 1) {
return "חיובי";
}
else {
return "שלילי";
}
}
private int getResultInt(String result) {
if (result.equals("חיובי")) {
return 1;
}
else {
return 0;
}
}
private void addRecord(Record record) {
Records.add(record);
}
private class RecordListAdapter extends ArrayAdapter<Record> {
public RecordListAdapter() {
super(NewRecordActivity.this, R.layout.record_item, Records);
}
@Override
public View getView(int position, View view, ViewGroup parent) {
if (view == null) {
view = getLayoutInflater().inflate(R.layout.record_item, parent, false);
}
Record currentRecord = Records.get(position);

TextView value = (TextView) view.findViewById(R.id.value_txt_record);
value.setText(currentRecord.getValue());
TextView date = (TextView) view.findViewById(R.id.date_txt_record);
date.setText(getDateString(currentRecord.getDate()));
TextView result = (TextView) view.findViewById(R.id.result_txt_record);
result.setText(getResultString(currentRecord.getResult()));

return view;
}
}
private void populateRecordList() {
ArrayAdapter<Record> adapter = new RecordListAdapter();
listView.setAdapter(adapter);
}
@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_new_record, 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.
int id = item.getItemId();

//noinspection SimplifiableIfStatement

return super.onOptionsItemSelected(item);
}
}


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  מכתב: asco88  10.01.15 19:02 1
     זה בדיוק העניין - שהאובייקט הזה קיים ב-MainActivity. Tom_l  10.01.15 19:14 2
  השאלה שלי: איך אני משתמש ב-findViewById לאובייקט שנמצא ב-Layout אחר? Tom_l  10.01.15 23:07 3
     אבל אתה מקשר את הactivty שלך לתוך ה-layout rccool 11.01.15 10:49 7
  תנסה rccool 11.01.15 00:40 4
     לא הבנתי איך זה קשור... Tom_l  11.01.15 10:24 5
         אז לא הבנתי ,מה שאתה רוצה לעשות rccool 11.01.15 10:44 6
             מכתב Tom_l  11.01.15 10:55 8
                 אז למה לא להוסיף list חדש לתוך NewRecordActivity ופתרת את הבעייה rccool 11.01.15 11:34 9
                     אבל העניין הוא שלכל אלמנט יש את המיקום שלו... ה-listView אמור להיות מוצג Tom_l  11.01.15 12:49 10
                         נכון אבל אתה מפספס את הנקודה שאתה לפני כן מ״קשר״ את הlayout rccool 11.01.15 13:03 11
  רק להבנה חומוס 11.01.15 15:23 12
     אמת. Tom_l  11.01.15 15:55 13
         אם כך, למה מראש אתה מגדיר את האלמנט ListView בתוך NewRecordActivity? חומוס 11.01.15 16:11 14
             אני לא... זה מה שבדיוק אני רוצה לעשות. Tom_l  11.01.15 17:36 15
                 אחי, לפי מה שאתה מנסה לתאר , זה לך קצת חוסר בהבנת המבנה של האפליקציה חומוס 11.01.15 17:56 16
                     מכתב Tom_l  11.01.15 18:06 17
                         תוסיף גם את הקוד של ה MainActivity המעודכן, על מנת שנוכל להתקדם חומוס 11.01.15 21:30 18
                             נעשה זאת מסודר Tom_l  11.01.15 22:05 19
                                 אוקיי חומוס 12.01.15 01:45 20
  תום תקרא כאן דברים יעזור לך המון. rccool 12.01.15 10:04 21

       
asco88 
חבר מתאריך 17.6.04
26757 הודעות
   19:02   10.01.15   
אל הפורום  
  1. מכתב:  
בתגובה להודעה מספר 0
 
יש לך:

listView = (ListView) findViewById(R.id.record_listView);

תבדוק אם באמת קיים בactivity_new_record אובייקט עם הID הזה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Tom_l 
חבר מתאריך 1.1.10
1696 הודעות
   19:14   10.01.15   
אל הפורום  
  2. זה בדיוק העניין - שהאובייקט הזה קיים ב-MainActivity.  
בתגובה להודעה מספר 1
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Tom_l 
חבר מתאריך 1.1.10
1696 הודעות
   23:07   10.01.15   
אל הפורום  
  3. השאלה שלי: איך אני משתמש ב-findViewById לאובייקט שנמצא ב-Layout אחר?  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
rccool
חבר מתאריך 22.12.13
61 הודעות
   10:49   11.01.15   
אל הפורום  
  7. אבל אתה מקשר את הactivty שלך לתוך ה-layout  
בתגובה להודעה מספר 3
 
  

setContentView(R.layout.activityt);
תשנה כאן ואז תוכל לגשת אליו.
אני לא יודע איך להציג את זה אחרת פה אבל בעיקרון אחרי R.Layout.whatever


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
rccool
חבר מתאריך 22.12.13
61 הודעות
   00:40   11.01.15   
אל הפורום  
  4. תנסה  
בתגובה להודעה מספר 0
 
   למה אתה לא רושם כך:

RecordListAdapter adapter = new RecordListAdapter();

ודבר שני

ArrayList<Record> Records = new ArrayList<Record>();

והאם בתוך ה-record_item

הגדרת ids?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Tom_l 
חבר מתאריך 1.1.10
1696 הודעות
   10:24   11.01.15   
אל הפורום  
  5. לא הבנתי איך זה קשור...  
בתגובה להודעה מספר 4
 
   הבעיה שלי הייתה בהגדרת ה-ID של record_listView שנמצא ב-Activity אחר בשם MainActivity.
יש לי listView בשם record_listView שנמצא ב-MainActivity. איך אני מגדיר אותו מ-Activity אחר? new_record_activity.java.


תודה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
rccool
חבר מתאריך 22.12.13
61 הודעות
   10:44   11.01.15   
אל הפורום  
  6. אז לא הבנתי ,מה שאתה רוצה לעשות  
בתגובה להודעה מספר 5
 
   זה לקחת קובץ layout xml ולשייך אותו לactivty אחר?!
הבנתי נכון?

ו


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Tom_l 
חבר מתאריך 1.1.10
1696 הודעות
   10:55   11.01.15   
אל הפורום  
  8. מכתב  
בתגובה להודעה מספר 6
 
   יש לי שני Activities.
הראשון נקרא MainActivity. השני נקרא NewRecordActivity.
ב-NewRecordActivity, המשתמש מכניס ערכים לטופס מסויים. כאשר הערכים האלה נשמים כעצם שמוגדר ומוצגים ב-listView כש-id=record_listView, שנמצא ב-MainActivity.
כדי לשלוח את העצם הזה ל-listView אני צריך מן הסתם להגדיר אותו. כשאני מנסה להגדיר אותו אני מקבל NULL, וזה הגיוני - כי האלמנט הזה לא מוגדר ב-Activity ממנו אני מנסה להגדיר אותו, דהיינו NewRecordActivity.
איך אני גורם לזה לעבוד? איך אני נכנס ל-MainActivity מ-NewRecordActivity ומקבל ממנו את ה-listView, כדי שאני אוכל להשתמש בו ב-NewRecordActivity.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
rccool
חבר מתאריך 22.12.13
61 הודעות
   11:34   11.01.15   
אל הפורום  
  9. אז למה לא להוסיף list חדש לתוך NewRecordActivity ופתרת את הבעייה  
בתגובה להודעה מספר 8
 
   הרי כמו שרשמתי לך מקודם אתה אמור ל״קשר״ בין הactivity ל layout שלך.
אני לא מכיר דרך כזאת וגם לא ברור לי למה אתה רוצה לבצע זאת כך.
יותר קל להוסיף list חדש לתוך הxml שלך שאתה כרגע עובד איתו ופתרת לך את כל הבעייה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Tom_l 
חבר מתאריך 1.1.10
1696 הודעות
   12:49   11.01.15   
אל הפורום  
  10. אבל העניין הוא שלכל אלמנט יש את המיקום שלו... ה-listView אמור להיות מוצג  
בתגובה להודעה מספר 9
 
   ב-MainActivity. יש לזה דרך - LayoutInflater. אני פשוט לא יודע איך לעשות זאת.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
rccool
חבר מתאריך 22.12.13
61 הודעות
   13:03   11.01.15   
אל הפורום  
  11. נכון אבל אתה מפספס את הנקודה שאתה לפני כן מ״קשר״ את הlayout  
בתגובה להודעה מספר 10
 
   ל activity שלך והוא לא מכיר אותו.


setContentView(R.layout.activity


בכל אופן נראה שיש כאן איזה שהיא דרך לא ניסיתי.
http://stackoverflow.com/questions/9564431/newbie-set-content-view-which-consists-of-two-parts


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
חומוס לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
13069 הודעות, 5 פידבק
   15:23   11.01.15   
אל הפורום  
  12. רק להבנה  
בתגובה להודעה מספר 0
 
הMain Activity אמור להציג רשימה של פריטים
והNewRecordActivity אמור להציג יצירה של פריט חדש שאמור להופיע לבסוף ברשימה?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Tom_l 
חבר מתאריך 1.1.10
1696 הודעות
   15:55   11.01.15   
אל הפורום  
  13. אמת.  
בתגובה להודעה מספר 12
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
חומוס לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
13069 הודעות, 5 פידבק
   16:11   11.01.15   
אל הפורום  
  14. אם כך, למה מראש אתה מגדיר את האלמנט ListView בתוך NewRecordActivity?  
בתגובה להודעה מספר 13
 
הרי כפי שהסברת, אתה לא אמור להציג שם רשימה, אלא רק שדה טקסט
להכנסת רשומה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Tom_l 
חבר מתאריך 1.1.10
1696 הודעות
   17:36   11.01.15   
אל הפורום  
  15. אני לא... זה מה שבדיוק אני רוצה לעשות.  
בתגובה להודעה מספר 14
 
   אני כן קורא לו שם כי אני רוצה לדחוף אליו ערכים.
זאת בדיוק השאלה שלי - איך אני מגדיר את האלמנט הזה שנמצא ב-MainActivity, כי כשאני עושה את זה ככה - אני מקבל NULL.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
חומוס לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
13069 הודעות, 5 פידבק
   17:56   11.01.15   
אל הפורום  
  16. אחי, לפי מה שאתה מנסה לתאר , זה לך קצת חוסר בהבנת המבנה של האפליקציה  
בתגובה להודעה מספר 15
 
(בפרט האפליקציה שלך)

יצא לך לעבור על מדריכים לפני שניגשת לעניינים?
אולי כדאי שתעבור שוב על המבנה של אפליקציה ובפרט על הנושא
של Activity, Layouts, ListView, Adapters

בכל מקרה, בשורה התחתונה, הMainActivity אמור להחזיק:
ListView - הרכיב הויזואלי של הרשימה
RecordListAdapter - הרכיב שמקשר את המידע של הRecords לאלמנטים ברשימה

הRecordActivity אמור לחזיק:
EditText - טקסט להכנסת רשומה חדשה
Button - לאישור ההכנסה

כאשר הכפתור נלחץ בRecordActivity אתה אמור לחזור בחזרה אל הMainActivity ולשלוף את המידע מחדש, ולהציג אותו ברשימה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Tom_l 
חבר מתאריך 1.1.10
1696 הודעות
   18:06   11.01.15   
אל הפורום  
  17. מכתב  
בתגובה להודעה מספר 16
 
   א. אני מסוג האנשים שלומדים By doing. אין לי ספק שאתקל בבעיות. אני לומד המון תוך כדי.
ב. תוכל אולי לכוון אותי איך לעשות זאת מבחינה טכנית בהתאם למה שכבר בניתי?
ג. עבדתי לפי מדריך אבל היו לי כמה שינויים(כנראה שזה מה שהוביל לטעות).


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
חומוס לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
13069 הודעות, 5 פידבק
   21:30   11.01.15   
אל הפורום  
  18. תוסיף גם את הקוד של ה MainActivity המעודכן, על מנת שנוכל להתקדם  
בתגובה להודעה מספר 17
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Tom_l 
חבר מתאריך 1.1.10
1696 הודעות
   22:05   11.01.15   
אל הפורום  
  19. נעשה זאת מסודר  
בתגובה להודעה מספר 18
 
  

NewRecordActivity.java

package il.co.tomluz.thesmartweight;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;

public class NewRecordActivity extends ActionBarActivity {

EditText value_txt;
RadioGroup result_radioGroup;
RadioButton result_radioButton;
EditText date_txt;
List<Record> Records = new ArrayList<Record>();
ListView listView = (ListView) findViewById(R.id.record_listView);

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

Button newRecord_btn = (Button) findViewById(R.id.newRecord_btn);
newRecord_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
value_txt = (EditText) findViewById(R.id.value_editText);
result_radioGroup = (RadioGroup) findViewById(R.id.result_radioGroup);
int result_id = result_radioGroup.getCheckedRadioButtonId();
result_radioButton = (RadioButton) findViewById(result_id);
String result_txt = result_radioButton.getText().toString();
int result_int = getResultInt(result_txt);
date_txt = (EditText) findViewById(R.id.date_editText);
long date_timestamp = getDateTime(date_txt.getText().toString()).getTime();

Record new_record = new Record(value_txt.getText().toString(), result_int, date_timestamp);
addRecord(new_record);
/*RecordsDBHelper records_dbHelper = new RecordsDBHelper(getApplicationContext());
records_dbHelper.createRecord(new_record);*/
populateRecordList();
}
});
}

private Date getDateTime(String date_txt) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
try {
return dateFormat.parse(date_txt);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
private String getDateString(long timestamp) {
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(timestamp);
String date = DateFormat.format("dd/MM/yyyy", cal).toString();
return date;
}
private String getResultString(int result) {
if (result == 1) {
return "חיובי";
}
else {
return "שלילי";
}
}
private int getResultInt(String result) {
if (result.equals("חיובי")) {
return 1;
}
else {
return 0;
}
}
private void addRecord(Record record) {
Records.add(record);
}
private class RecordListAdapter extends ArrayAdapter<Record> {
public RecordListAdapter() {
super(NewRecordActivity.this, R.layout.record_item, Records);
}
@Override
public View getView(int position, View view, ViewGroup parent) {
if (view == null) {
view = getLayoutInflater().inflate(R.layout.record_item, parent, false);
}
Record currentRecord = Records.get(position);

TextView value = (TextView) view.findViewById(R.id.value_txt_record);
value.setText(currentRecord.getValue());
TextView date = (TextView) view.findViewById(R.id.date_txt_record);
date.setText(getDateString(currentRecord.getDate()));
TextView result = (TextView) view.findViewById(R.id.result_txt_record);
result.setText(getResultString(currentRecord.getResult()));

return view;
}
}
private void populateRecordList() {
ArrayAdapter<Record> adapter = new RecordListAdapter();
listView.setAdapter(adapter);
}
@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_new_record, 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.
int id = item.getItemId();

//noinspection SimplifiableIfStatement

return super.onOptionsItemSelected(item);
}
}

MainActivity.java


package il.co.tomluz.thesmartweight;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends ActionBarActivity {

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


@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_main, 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.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_new) {
Intent new_record_intent = new Intent(MainActivity.this, NewRecordActivity.class);
startActivity(new_record_intent);
return true;
}

return super.onOptionsItemSelected(item);
}
}

activity_new_record.xml


<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="il.co.tomluz.thesmartweight.NewRecordActivity">

<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layoutDirection="rtl">

<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/date_txt"
android:id="@+id/date_textView"
android:layout_column="0"
android:layout_gravity="bottom" />

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="date"
android:ems="10"
android:id="@+id/date_editText"
android:layout_column="1" />
</TableRow>

<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/value_txt"
android:id="@+id/value_textView"
android:layout_column="0"
android:layout_gravity="bottom" />

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/value_editText"
android:layout_column="1" />
</TableRow>

<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/result_radioGroup"
android:layout_column="0"
android:layout_span="2">

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/positive_txt"
android:id="@+id/positive_radioButton" />

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/negative_txt"
android:id="@+id/negative_radioButton" />
</RadioGroup>
</TableRow>

<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/new_record_txt"
android:id="@+id/newRecord_btn"
android:layout_column="0"
android:layout_span="2"/>
</TableRow>

</TableLayout>
</RelativeLayout>

activity_main.xml


<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/record_listView"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>


תודה רבה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
חומוס לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
13069 הודעות, 5 פידבק
   01:45   12.01.15   
אל הפורום  
  20. אוקיי  
בתגובה להודעה מספר 19
 
ערכתי לאחרונה בתאריך 12.01.15 בשעה 01:55 בברכה, חומוס
 
אז בעקרון ההגדרות של הxml נכונות:
activity_main.xml - מכיל ListView שתפקידו להציג את הרשומות
activity_new_record.xml - מכיל שדות הכנסת טקסט (EditText) וכפתור לאישור הכנסת רשומה

הבעיה הראשונה היא השימוש של הxml בתוך הActivities

כפי שאמרנו, הMainActivity אמור להיות מקושר לactivity_main.xml
עשית את זה, אך לא עשית שום שימוש בListView
אתה בוודאי כרגע לא רואה את הרשימה באקטיביטי הזה.
מה שתצטרך לעשות זה להעביר את השדות הבאים מNewRecordActivity לMainActivity:
ListView listView - יקושר לrecord_listView מactivity_main.xml
List<Record> Records - יהווה את מקור המידע שיציג הlistView
RecordListAdapter - יהווה את הקישור בין רשומת מידע לוגית לרשומת מידע ויזואלית

** כמו כן, כהמלצה להמשך - פונקציות כמו getDateTime וgetDateString רצוי לאחסן בקלאס מסוג Utility:
http://en.wikipedia.org/wiki/Utility_class
אלו פונקציות כלליות שיוכלו לשמש אותך בעוד מקומות.

כעת,לאחר שהוצאת את כל מה שקשור לרשימה מNewRecordActivity אל MainActivity , מה שנשאר זה להגיב בצורה נכונה לכפתור הוספת רשומה.

ראיתי שיש שם נסיון להשתמש בDATABASE, אך זה בהערה, אז אני לא מתחייס לזה (למרות שכדאי לדעת גם לעבוד עם DATABASE)

בכל מקרה, בוא ננסה לעשות שימוש בהעברת מידע בין אקטיביטיז (במקרה שלנו אנחנו זקוקים להעברה רק לכיוון אחד - העברת אובייקט מסוג Record מNewRecordActivity לMainActivity)

הרעיון הוא כזה:
MainActivity מפעיל את NewRecordActivity ומחכה לתוצאה
בNewRecordActivity מתבצעת הכנסה של רשומה חדשה
NewRecordActivity מעביר תוצאה(רשומה) לMainActivity
MainActivity מכניס את הרשומה למערך הרשומות שלו ומעדכן את המידע הויזואלי

העברת אובייקט (Serializable) בין אקטיביטיז:
www.coderzheaven.com/2013/03/24/pass-object-finishing-activity-previous-activity-android/
*שוב , במקרה שלך חשוב רק העברת התוצאה בחזרה


מקווה שנתתי מספיק מידע
תנסה להמשיך מכאן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
rccool
חבר מתאריך 22.12.13
61 הודעות
   10:04   12.01.15   
אל הפורום  
  21. תום תקרא כאן דברים יעזור לך המון.  
בתגובה להודעה מספר 0
 
   http://ronenhalevy-android.blogspot.co.il

וחוץ מזה יש קהילה שלמה של אנדרואיד לא ארשום כאן אבל תבדוק בגוגל


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net