Отображение ArrayList для пользователя - PullRequest
0 голосов
/ 21 марта 2019

У меня есть два действия: одно - MainActivity, а другое - Main2Activity.В Main2Activity я беру ввод от пользователя в TextView и сохраняю его в ArrayList, теперь я хочу отправить этот ArrayList в MainActivity, где я буду отображать его для пользователя.Я использовал намерение.Но мое приложение падает.Ниже приведены мои два вида деятельности: Mainactivity

    package com.example.to_doapp;

   import android.content.Intent;
   import android.os.Bundle;
   import android.support.design.widget.FloatingActionButton;
   import android.support.design.widget.Snackbar;
   import android.support.v7.app.AppCompatActivity;
   import android.support.v7.widget.Toolbar;
   import android.view.View;
   import android.view.Menu;
   import android.view.MenuItem;
   import android.widget.LinearLayout;
   import android.widget.TextView;
   import android.widget.Toast;
   import java.io.Serializable;
   import java.util.ArrayList;

   public class MainActivity extends AppCompatActivity {

   public void onclick (View view  )
   {

        Intent intent = new Intent(getApplicationContext(), 
            Main2Activity.class );
        startActivity(intent);
  }

@Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

    Intent intent = getIntent();
    //Toast.makeText (this,intent.getStringExtra("task"), Toast.LENGTH_SHORT ).show() ;

    Bundle args = intent.getBundleExtra("BUNDLE");
     ArrayList< String> object  =  (ArrayList<String>) args.getSerializable("ARRAYLIST");
    LinearLayout lView = new LinearLayout(this);
    TextView myText= new TextView(this);
    lView.addView(myText);
    for (int i=0; i<object.size();i++){
        myText.append(object.get(i));
        myText.append("\n");
    }
    setContentView(lView);

 }

@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_settings) {
        return true;       }

    return super.onOptionsItemSelected(item);
  }
  }

Main2Activity - это пакет com.example.to_doapp;

    import android.content.Intent;
    import android.os.Bundle;
    import android.support.design.widget.FloatingActionButton;
    import android.support.design.widget.Snackbar;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.View;
    import android.widget.EditText;
    import java.io.Serializable;
    import java.util.ArrayList;

    public class Main2Activity extends AppCompatActivity {

    ArrayList< String> arr = new ArrayList < String > ();
    public void BackMain ( View view )
    {
        Intent intent = new Intent( getApplicationContext() 
           ,MainActivity.class ) ;
       Bundle args = new Bundle();
        EditText editText = ( EditText) findViewById( R.id.editText3) ;
        String s = editText.getText().toString();
       arr.add ( s ) ;
       args.putSerializable("ARRAYLIST",(Serializable)arr);
        intent.putExtra("bundle",args);
       startActivity(intent);
     }

   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = findViewById(R.id.fab);
         fab.setOnClickListener(new View.OnClickListener() {
         @Override
        public void onClick(View view) {
        Snackbar.make(view, "Replace with your own action", 
            Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
       });
       }

       }

My Logcat показывает что-то вроде этого

03-21 07: 55: 00.407 763-826 /?E / ConnectivityService: Удалено исключение RemoteException при попытке отправить сообщение обратного вызова для NetworkRequest [id = 81, legacyType = -1, [Capabilities: INTERNET & NOT_RESTRICTED & TRUSTED]] 03-21 07: 55: 58.292 29529-29529 /?E / MPlugin: Неподдерживаемый класс: com.mediatek.common.telephony.IOnlyOwnerSimSupport 03-21 07: 56: 01.380 29645-29672 /?E / MPlugin: Неподдерживаемый класс: com.mediatek.common.telephony.IOnlyOwnerSimSupport 03-21 07: 56: 01.577 29624-29624 / com.example.to_doapp E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.example.to_doapp, PID: 29624 java.lang.RuntimeException: Невозможно запустить действие. ComponentInfo {com.example.to_doapp / com.example.to_doapp.MainActivity}: java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.io.Serializable android.os.Bundle.getSerializable (java.lang.String) 'для ссылки на пустой объект в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2534) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2614) в android.app.ActivityThread.access $ 800 (ActivityThread.java:178) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1470) на android.os.Handler.dispatchMessage (Handler.java:111) на android.os.Looper.loop (Looper.java:194) в android.app.ActivityThread.main (ActivityThread.java:5643) в java.lang.reflect.Method.invoke (NativeMethod) в java.lang.reflect.Method.invoke (Method.java:372) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:960) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:755) Причина: java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.io.Serializable android.os.Bundle.getSerializable (java.lang.String)' для ссылки на нулевой объект вcom.example.to_doapp.MainActivity.onCreate (MainActivity.java:51) на android.app.Activity.performCreate (Activity.java:6100) на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1112) на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2481) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2614) в android.app.ActivityThread.access $ 800 (ActivityThread.java:178) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1470) на android.os.Handler.dispatchMessage (Handler.java:111) на android.os.Looper.loop (Looper.java:194) на android.app.ActtivationThread.main (ActivityThread.java:5643) в java.lang.reflect.Method.invoke (нативный метод) в java.lang.reflect.Method.invoke (Method.java:372) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:960) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:755) 03-21 07: 56: 01.787 29645-29670 /?E / WifiManager: mWifiServiceMessenger == пусто 03-21 07: 56: 03.275 29764-29764 /?E / MPlugin: Неподдерживаемый класс: com.mediatek.common.telephony.IOnlyOwnerSimSupport 03-21 07: 56: 03.390 29645-29671 /?E / NativeCrypto: ssl = 0xb47ac800 cert_verify_callback x509_store_ctx = 0x9fa343e0 arg = 0x0 03-21 07: 56: 03.390 29645-29671 /?E / NativeCrypto: ssl = 0xb47ac800 cert_verify_callback, вызывающий verifyCertificateChain authMethod = ECDHE_ECDSA 03-21 07: 56: 03.536 29645-29672 /? E / NativeCrypto: ssl = 0xaf83da00 cert_verify_callback x509_store_ctx = 0x9f930460 arg = 0x0 03-21 07: 56: 03.536 29645-29672 /? E / NativeCrypto: ssl = 0xaf83da00 cert_verify_callback вызов verifyCertificateChain authMethod = ECDHE_ECDSA 03-21 07: 56: 03.584 29787-29787 /? E / WifiManager: mWifiServiceMessenger == ноль 03-21 07: 56: 04.382 29787-29787 /? E / MPlugin: неподдерживаемый класс: com.mediatek.common.telephony.IOnlyOwnerSimSupport 03-21 07: 56: 04.743 29838-29838 /? E / MPlugin: неподдерживаемый класс: com.mediatek.common.telephony.IOnlyOwnerSimSupport 03-21 07: 56: 11.598 29645-29681 /? E / Finsky: [4373] fng.a (20): Невозможно построить селектор: /storage/sdcard0/Download/marketenvs.csv: открыть не удалось: ENOENT (нет такого файл или каталог) 03-21 07: 56: 11.772 29645-29724 /? E / SQLiteLog: (283) восстановил 63 кадра из файла WAL /data/data/com.android.vending/databases/phenotype.db-wal 03-21 07: 56: 55.470 763-763 /? E / WifiTrafficPoller: ENABLE_TRAFFIC_STATS_POLL ложный токен 226 03-21 07: 56: 55.535 763-823 /? E / WifiStateMachine: ScanModeState (когда = -58мс что = 131167! CMD_SCREEN_STATE_CHANGED { когда = -58мс что = 131167 target = com.android.internal.util.StateMachine $ SmHandler} 0 0 03-21 07: 56: 55,536 763-823 /? E / WifiStateMachine: DriverStartedState (когда = -58мс что = 131167! CMD_SCREEN_STATE_CHANGED {когда = -58мс what = 131167 target = com.android.internal.util.StateMachine $ SmHandler} 0 0 03-21 07: 56: 55.536 763-823 /? E / WifiStateMachine: SupplicantStartedState (когда = -59мс что = 131167! CMD_SCREEN_STATE_CHANGED {когда = -59мс что = 131167 target = com.android.internal.util.StateMachine $ SmHandler} 0 0 03-21 07: 56: 55,537 763-823 /? E / WifiStateMachine: DefaultState (когда = -60 мс что = 131167! CMD_SCREEN_STATE_CHANGED {когда = -60мс что = 131167 target = com.android.internal.util.StateMachine $ SmHandler} 0 0 03-21 07: 56: 55,547 763-823 /? E / WifiStateMachine: cancelDelayedScan -> 228 03-21 07: 56: 55,547 763-823 /? E / WifiStateMachine: handleScreenStateChanged Выход: false 03-21 07: 56: 55.548 763-823 /? E / WifiStateMachine: ScanModeState (когда = -4 мс что = 131154CMD_ENABLE_RSSI_POLL {когда = -4мс что = 131154 target = com.android.internal.util.StateMachine $ SmHandler} 0 0 03-21 07: 56: 55,550 763-823 /? E / WifiStateMachine: DriverStartedState (когда = -6мс что = 131154CMD_ENABLE_RSSI_POLL {когда = -6мс что = 131154 target = com.android.internal.util.StateMachine $ SmHandler} 0 0 03-21 07: 56: 55,550 763-823 /? E / WifiStateMachine: SupplicantStartedState (когда = -6мс что = 131154CMD_ENABLE_RSSI_POLL {когда = -6мс что = 131154 target = com.android.internal.util.StateMachine $ SmHandler} 0 0 03-21 07: 56: 55,551 763-823 /? E / WifiStateMachine: DefaultState (когда = -6ms что = 131154CMD_ENABLE_RSSI_POLL {когда = -7мс что = 131154 target = com.android.internal.util.StateMachine $ SmHandler} 0 0 03-21 07: 56: 55,551 763-823 /? E / WifiStateMachine: ScanModeState (когда = -6 мс что = 131158 arg1 = 1CMD_SET_SUSPEND_OPT_ENABLED {когда = -6мс что = 131158 arg1 = 1 target = com.android.internal.util.StateMachine $ SmHandler} 1 0 03-21 07: 56: 55.552 763-823 /? E / WifiStateMachine: DriverStartedState (когда = -7ms что = 131158 arg1 = 1CMD_SET_SUSPEND_OPT_ENABLED {когда = -7ms что = 131158 arg1 = 1 target = com.android.internal.util.StateMachine $ SmHandler} 1 0 03-21 07: 56: 55,574 763-823 /? E / WifiStateMachine: setSuspendOptimizationsNative: 4 true -want true stack: setSuspendOptimizationsNative - доступ к $ 16400 - processMessage - processMsg 03-21 07: 56: 55.575 763-823 /? E / WifiStateMachine: setSuspendOptimizationsNative сделать это 4 верно stack: setSuspendOptimizationsNative - доступ к $ 16400 - processMessage - processMsg 03-21 07: 56: 55.585 763-823 /? E / native: сделать приостановку true 03-21 07: 56: 55.599 763-823 /? E / WifiStateMachine: ScanModeState (когда = -53мс что = 131248M_CMD_NOTIFY_SCREEN_OFF {когда = -53мс что = 131248 target = com.android.internal.util.StateMachine $ SmHandler} 0 0 03-21 07: 56: 55.599 763-823 /? E / WifiStateMachine: DriverStartedState (когда = -54мс что = 131248M_CMD_NOTIFY_SCREEN_OFF {когда = -54мс что = 131248target = com.android.internal.util.StateMachine $ SmHandler} 0 0 03-21 07: 56: 55.600 763-823 /? E / WifiStateMachine: SupplicantStartedState (когда = -54мс что = 131248M_CMD_NOTIFY_SCREEN_OFF {когда = -55мс что = 131248 target = com.android.internal.util.StateMachine $ SmHandler} 0 0 03-21 07: 56: 55,601 763-823 /? E / WifiStateMachine: DefaultState (когда = -55мс что = 131248M_CMD_NOTIFY_SCREEN_OFF {когда = -55мс что = 131248 target = com.android.internal.util.StateMachine $ SmHandler} 0 0 03-21 07: 56: 56.504 1773-29908 /? E / MPlugin: неподдерживаемый класс: com.mediatek.common.telephony.IOnlyOwnerSimSupport 03-21 07: 56: 56.635 763-779 /? E / Датчики: handleToDriver handle (0) 03-21 07: 56: 56.636 763-779 /? E / Датчики: handleToDriver handle (0) 03-21 07: 56: 56.638 763-779 /? E / Датчики: новый дескриптор setDelay (0), нс (20000000) м, ошибка (0), указатель (2) 03–21 07: 57: 00,388 763–1406 /? E / Датчики: handleToDriver ручка (0) 03-21 07: 57: 28,639 1673-13747 /? E / WakeLock: GCM_HB_ALARM выпуск без согласованного приобретения!

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Ваше приложение падает, потому что из журнала:

java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.io.Serializable android.os.Bundle.getSerializable (java.lang.String) 'для ссылки на пустой объект по адресу com.example.to_doapp.MainActivity.onCreate ( MainActivity.java: 51 )

В вашем методе public void BackMain ( View view ) (предлагаем переименоватьметод "backMain" в соответствии с соглашениями об именах Java ) в Main2Activity, у вас есть intent.putExtra("bundle",args);, где ключ (или имя) дополнительных данных, которые являются первым аргументом, является "связкой".Однако, когда вы получаете эти дополнительные данные из MainActivity, у вас есть Bundle args = intent.getBundleExtra("BUNDLE");, где имя пакета - «BUNDLE», что не соответствует «пакету», поэтому он вернет ноль.Вам нужно использовать то же имя для дополнительных данных (в данном случае Bundle), которые вы хотите передать через Намерение из одного занятия в другое.

0 голосов
/ 21 марта 2019

Чтобы передать объект arrayList другому действию, используйте этот код.

В Main2Activity

ArrayList<String> arr = new ArrayList<String>();
EditText editText = ( EditText) findViewById( R.id.editText3) ;
String s = editText.getText().toString();
arr.add (s) ;
intent.putExtra("mylist", arr);

В MainActivity

ArrayList<String> object = (ArrayList<String>)getIntent().getSerializableExtra("mylist");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...