2016-08-02 8 views
-3

数値からEditTextの文字列を1つのアクティビティから別のアクティビティに送信したい。しかし、私は私のapkクラッシュを保存するをクリックします。ここにコードとlogcatがあります。文字列を送信するとAndroidがクラッシュする

設定

public class settings extends Activity { 

    Button btnSave; 
    TextView text; 

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

     btnSave = (Button)findViewById(R.id.save); 
     final EditText passkey = (EditText)findViewById(R.id.editText); 
     text=(TextView)findViewById(R.id.textView3); 


     btnSave.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       String pass = passkey.getText().toString(); 

       Intent myIntent = new Intent(settings.this, unlock.class); 
       myIntent.putExtra("String", pass); 
       startActivity(myIntent); 
      } 
     }); 
    } 
} 

ロック解除

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_unlock); 

     String newString; 
     if (savedInstanceState == null) { 
      Bundle extras = getIntent().getExtras(); 
      if(extras == null) { 
       newString= null; 
      } else { 
       newString= extras.getString("String"); 
      } 
     } else { 
      newString= (String) savedInstanceState.getSerializable("String"); 
     } 

onResume()メソッド。代わりに、このラインの

newString =extras.getString("String", null); 

:あなたはこのラインを使用する必要が

@Override 
    public void onResume() { 
     super.onResume(); 

     Intent intent = getIntent(); 

     address = intent.getStringExtra(DeviceList.EXTRA_ADDRESS); 

     BluetoothDevice device = btAdapter.getRemoteDevice(address); 

     try { 
      btSocket = createBluetoothSocket(device); 
     } catch (IOException e) { 
      Toast.makeText(getBaseContext(), "Socket creation failed", Toast.LENGTH_LONG).show(); 
     } 
     try 
     { 
      btSocket.connect(); 
     } catch (IOException e) { 
      try 
      { 
       btSocket.close(); 
      } catch (IOException e2) 
      { 
       // 
      } 
     } 
     mConnectedThread = new ConnectedThread(btSocket); 
     mConnectedThread.start(); 

     mConnectedThread.write("x"); 
    } 

デバイスリスト

public class DeviceList extends AppCompatActivity { 

    Button btnPaired; 
    ListView devicelist; 
    private BluetoothAdapter myBluetooth = null; 
    private Set<BluetoothDevice> pairedDevices; 
    public static String EXTRA_ADDRESS = "device_address"; 

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

     btnPaired = (Button)findViewById(R.id.button); 
     devicelist = (ListView)findViewById(R.id.listView); 

     myBluetooth = BluetoothAdapter.getDefaultAdapter(); 
     if(myBluetooth == null) 
     { 

      Toast.makeText(getApplicationContext(), "Bluetooth Device Not Available", Toast.LENGTH_LONG).show(); 

      finish(); 
     } 
     else 
     { 
      if (myBluetooth.isEnabled()) 
      { } 
      else 
      { 

       Intent turnBTon = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
       startActivityForResult(turnBTon,1); 
      } 
     } 
     btnPaired.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) 
      { 
       pairedDevicesList(); 
      } 
     }); 
    } 

    private void pairedDevicesList() 
    { 
     pairedDevices = myBluetooth.getBondedDevices(); 
     ArrayList list = new ArrayList(); 

     if (pairedDevices.size()>0) 
     { 
      for(BluetoothDevice bt : pairedDevices) 
      { 
       list.add(bt.getName() + "\n" + bt.getAddress()); 
      } 
     } 
     else 
     { 
      Toast.makeText(getApplicationContext(), "No Paired Bluetooth Devices Found.", Toast.LENGTH_LONG).show(); 
     } 

     final ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, list); 
     devicelist.setAdapter(adapter); 
     devicelist.setOnItemClickListener(myListClickListener); 
    } 
    private AdapterView.OnItemClickListener myListClickListener = new AdapterView.OnItemClickListener() 
    { 
     public void onItemClick (AdapterView av, View v, int arg2, long arg3) 
     { 
      String info = ((TextView) v).getText().toString(); 
      String address = info.substring(info.length() - 17); 

      Intent i = new Intent(DeviceList.this, unlock.class); 

      i.putExtra(EXTRA_ADDRESS, address); 
      startActivity(i); 
     } 
    }; 

} 





  
+0

あなたの 'onResume()'を表示しますか? –

+0

私はそれを投稿しました、それは助けてくれるといいですか? –

+0

あなたはonResume()で何をしていますか? –

答えて

0

今、あなたはdifferent valuesdevice addressと1とedit text値を持つものとtwo positionsからSingle classを開いている何が起こっているのか。

editextを渡すとデバイスのアドレスがnullになり、この追加検証を処理するアプリがクラッシュします。 if(address != null)そうでなければ接続します。

@Override 
    public void onResume() { 
     super.onResume(); 

     Intent intent = getIntent(); 
     address = intent.getStringExtra(DeviceList.EXTRA_ADDRESS); 

     if(address != null){ 
     BluetoothDevice device = btAdapter.getRemoteDevice(address); 

     try { 
      btSocket = createBluetoothSocket(device); 
     } catch (IOException e) { 
      Toast.makeText(getBaseContext(), "Socket creation failed", Toast.LENGTH_LONG).show(); 
     } 
     try 
     { 
      btSocket.connect(); 
     } catch (IOException e) { 
      try 
      { 
       btSocket.close(); 
      } catch (IOException e2) 
      { 
      } 
     } 
     mConnectedThread = new ConnectedThread(btSocket); 
     mConnectedThread.start(); 
     mConnectedThread.write("x"); 
    } 
} 
+0

それは今働きます!ありがとうございます –

+0

@ H.Stefekあなたは歓迎されています。私は設定から​​ロックを解除するには今、私が押すと、それがクラッシュする –

+0

今すぐ完全なinfo.happyコーディングを提供しています –

-1

newString= extras.getString("String"); 
+0

まだ同じクラッシュ –

0

onResume()であなたが

012を行っています
Intent intent = getIntent(); 

     address = intent.getStringExtra(DeviceList.EXTRA_ADDRESS); 

     BluetoothDevice device = btAdapter.getRemoteDevice(address); 

ここでは、キーDeviceList.EXTRA_ADDRESSを持つ意図から何かを渡しましたか?ここに問題があります。その後、nullアドレスでremoteDeviceを探しています。

+0

あなたはログを説明しています。 –

+0

私は3つのアクティビティ、4つがありますが、1つは画面を読み込んでいてカウントしません、arduinoのBluetoothデバイスを見つけてそれに接続し、ロック解除アクティビティを開くデバイスリストです: –

+0

原因:java.lang.IllegalArgumentException:有効なBluetoothアドレス。 – Aditi

関連する問題