0

EditText の値を取り、それを別のアクティビティの TextView に入れるアクティビティを作成しようとしています。

これは、Textview とそれを編集するためのオプション メニューを含む最初のアクティビティのコードです。

public class Saturday extends Activity {

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

    Intent i = getIntent();
    String txt = i.getExtras().getString("txtData","");
    final TextView Tclass1;
    Tclass1 = (TextView)findViewById(R.id.seven);
    Tclass1.setText(txt);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.saturday, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
 switch(item.getItemId())
 {
 case R.menu.saturday:
     edit_schedule();
  return true;
 }
 return super.onOptionsItemSelected(item);

}
public void edit_schedule() {
    final TextView Tclass1;
    Tclass1 = (TextView)findViewById(R.id.seven); 
    Intent i = new Intent(this, EditSaturday.class);
 i.putExtra("text" , Tclass1.getText().toString());
 startActivity(i);

}}

これは、保存ボタンのある EditText を含む他のアクティビティのコードです。

public class EditSaturday extends Activity {

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

    Intent i = getIntent();
    String txt = i.getExtras().getString("txtData","");
    final EditText Eclass1;
    Eclass1 = (EditText)findViewById(R.id.eseven);
    Eclass1.setText(txt);

    findViewById(R.id.save).setOnClickListener(new View.OnClickListener() { 
        @Override
        public void onClick(View v) {

            save();
            }});

}

public void save() {
    final EditText Eclass1;
    Eclass1 = (EditText)findViewById(R.id.eseven);
    Intent i = new Intent(this, Saturday.class);
     i.putExtra("text" , Eclass1.getText().toString());
 startActivity(i);

}}

アプリケーションを実行すると、エラーが発生します

これはlogCatです

04-14 08:15:17.911: E/AndroidRuntime(1202): FATAL EXCEPTION: main
04-14 08:15:17.911: E/AndroidRuntime(1202): java.lang.RuntimeException: Unable to start activity ComponentInfo{sarah.bodoor.sto/sarah.bodoor.sto.Saturday}: java.lang.NullPointerException
04-14 08:15:17.911: E/AndroidRuntime(1202):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
04-14 08:15:17.911: E/AndroidRuntime(1202):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
04-14 08:15:17.911: E/AndroidRuntime(1202):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
04-14 08:15:17.911: E/AndroidRuntime(1202):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
04-14 08:15:17.911: E/AndroidRuntime(1202):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-14 08:15:17.911: E/AndroidRuntime(1202):     at android.os.Looper.loop(Looper.java:137)
04-14 08:15:17.911: E/AndroidRuntime(1202):     at android.app.ActivityThread.main(ActivityThread.java:5041)
04-14 08:15:17.911: E/AndroidRuntime(1202):     at java.lang.reflect.Method.invokeNative(Native Method)
04-14 08:15:17.911: E/AndroidRuntime(1202):     at java.lang.reflect.Method.invoke(Method.java:511)
04-14 08:15:17.911: E/AndroidRuntime(1202):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-14 08:15:17.911: E/AndroidRuntime(1202):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-14 08:15:17.911: E/AndroidRuntime(1202):     at dalvik.system.NativeStart.main(Native Method)
04-14 08:15:17.911: E/AndroidRuntime(1202): Caused by: java.lang.NullPointerException
04-14 08:15:17.911: E/AndroidRuntime(1202):     at sarah.bodoor.sto.Saturday.onCreate(Saturday.java:22)
04-14 08:15:17.911: E/AndroidRuntime(1202):     at android.app.Activity.performCreate(Activity.java:5104)
04-14 08:15:17.911: E/AndroidRuntime(1202):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
04-14 08:15:17.911: E/AndroidRuntime(1202):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
04-14 08:15:17.911: E/AndroidRuntime(1202):     ... 11 more
4

2 に答える 2

1
Intent i = new Intent(this, Saturday.class);

する必要があります

Intent i = new Intent(EditSaturday.this, Saturday.class); 
// should be referring to activity context

あなたのsave()で

また

   i.putExtra("text" , Eclass1.getText().toString());// key in EditSaturday 
   // keys should be the same 
   String txt = i.getExtras().getString("txtData","");// key in saturday
   // keys are different

最初のアクティビティでは、ボタンのクリック時に editext 値を取得し、インテントを使用してアクティビティ間でデータを渡します

EditText et= (EditText)findviewById(R.id.edittext);
String s= et.getText().toString();
Intent i= new Intent(firstActivity.this,secondActivity.class);
i.putExtra("key",s);
startActivity(i);

2 番目のアクティビティで onCreate()

setContentView(R.layout.second); 
Bundle extras= getIntent().getExtras();
if(extras!=null)
{
  TextView tv= (TextView)findviewById(R.id.textView1);
  String value = extras.getString("key");
  tv.setText(value); 
}  
于 2013-04-14T08:37:15.983 に答える
0

このコードを実装してみてください。

String txt = i.getExtras().getString("text","");

と置換する

String txt = i.getExtras().getString("txtData","");

インテントを渡して値を取得するために同じキーが必要だったためです。

インテントを渡すときにキー「テキスト」を置き、そのインテントを取得するときにキー「txtData」を使用します。両方が異なるため、受け渡しと取得に対して同じキーを使用します。

オプションメニューをクリックして次のアクティビティを呼び出すために次のコードを使用した後。

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    menu.add(0, 0, 0, "Next");
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
 switch(item.getItemId())
 {
 case 0:
     edit_schedule();
         return true;
 }
 return super.onOptionsItemSelected(item);

}
于 2013-04-14T08:58:11.123 に答える