Как обработать намерение, которое не имеет данных при первом вызове действия?

У меня есть два действия; Дом - мое первое действие, а Настройки - второе мое действие.

Действие «Настройки» вызывается из меню домашнего действия и возвращает данные в домашнее действие посредством намерения.

Но в первый раз, когда я запускаю приложение Android, намерение будет пустым, потому что второе действие еще не вызвано, поэтому я получаю исключение (исключение нулевого указателя Java).

Кто-нибудь может мне помочь с этим решением?

ИЗМЕНИТЬ : Код

Первое действие:

public class LoginActivity extends Activity {

    public static final int SETTINGS_ID = 1;
    Intent intn;

    EditText edt1;
    EditText edt2;
    String user, pass;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        intn= new Intent(this,SettingsActivity.class);
    }

    private class HttpConnectionRequest extends AsyncTask<Void, Void, Void>{
        @Override
        protected Void doInBackground(Void...params) {
            // TODO Auto-generated method stub
            //Code not included
        }
        return null;
    }
}

public void login(View V){

    edt1 = (EditText) this.findViewById(R.id.editText1);
    edt2 = (EditText) this.findViewById(R.id.editText2);
    user = edt1.getText().toString();
    pass = edt2.getText().toString();
    System.out.println("Username-->" + user);
    System.out.println("Password-->" + pass);
    String url="";
    url = getIntent().getExtras().getString("serverurl");
    System.out.println("url----->"+url);

    if(((null==user) || ("".equals(user))) && ((null==pass) || ("".equals(pass)) )){
        Toast.makeText(getApplicationContext(), "Please provide username and password", Toast.LENGTH_SHORT).show();  
    }
    else if((null==user) || ("".equals(user))){
        Toast.makeText(getApplicationContext(), "Please provide username", Toast.LENGTH_SHORT).show();  
    }
    else if ((null==pass) || ("".equals(pass))){
        Toast.makeText(getApplicationContext(), "Please provide password", Toast.LENGTH_SHORT).show();  
    }

    if ((null==url) || ("".equals(url))) {
        Toast.makeText(getApplicationContext(), "Please provide the Server url Settings->Server URL->Save", Toast.LENGTH_SHORT).show();  
    }

    HttpConnectionRequest conn= new HttpConnectionRequest();
    conn.execute();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // boolean result = super.onCreateOptionsMenu(menu);
    menu.add(0, SETTINGS_ID, 0, "Settings");
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.layout.menu, menu);
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case SETTINGS_ID:
            //this.finish();
            this.startActivity(intn);
            System.out.println("This Invoked . . .");
            break;
        }
        return false;
    }
}

Второе действие

public class SettingsActivity extends Activity {

    EditText edt1;
    Intent intn;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings);
        intn = new Intent (this,LoginActivity.class);
    }

    public void save(View v){
        edt1= (EditText) this.findViewById(R.id.serverurl);
        String url = edt1.getText().toString();
        intn.putExtra("serverurl",url);
        startActivity(intn);        
    }
}
14
задан Paul 1 February 2017 в 09:40
поделиться