2015-07-01 2 views
2

Итак, скажем, у меня есть 4 кнопки, и каждая кнопка содержит намерение, которое переходит к активности. Все они перемещаются в одно и то же действие. Когда я нажимаю первую кнопку, я хочу, чтобы эта новая активность показывала «Привет». Когда я нажимаю вторую кнопку, я хочу, чтобы она показывала «Bye» и так далее. Как мне это сделать ? Вот простой код, чтобы начать сПолучить определенные намерения

public class Intentt extends Activity { 
Button b1,b2,b3,b4; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_intentt); 
    b1 = (Button)findViewById(R.id.button2); 
    b2 = (Button)findViewById(R.id.button3); 
    b3 = (Button)findViewById(R.id.button4); 
    b4 = (Button)findViewById(R.id.button5); 
    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(Intentt.this,MainActivity.class); 
      startActivity(i); 
     } 
    }); 
    b2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(Intentt.this,MainActivity.class); 
      startActivity(i); 
     } 
    }); 
    b3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(Intentt.this,MainActivity.class); 
      startActivity(i); 
     } 
    }); 
    b4.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(Intentt.this,MainActivity.class); 
      startActivity(i); 
     } 
    }); 
} 

ответ

3

Просто передать некоторые данные через намерение статистов или намерения дополнительного Bundle:

Intent i=new Intent(context,MainActivity.class); 
i.putExtra(id, 453); 
context.startActivity(i); 

Пример:

Button b1, b2, b3, b4; 
Context context = this; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_intentt); 
    b1 = (Button) findViewById(R.id.button2); 
    b2 = (Button) findViewById(R.id.button3); 
    b3 = (Button) findViewById(R.id.button4); 
    b4 = (Button) findViewById(R.id.button5); 

    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(context, MainActivity.class); 
      i.putExtra(MainActivity.ID_ACTION, MainActivity.ACTION_1); 
      startActivity(i); 
     } 
    }); 
    b2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(context, MainActivity.class); 
      i.putExtra(MainActivity.ID_ACTION, MainActivity.ACTION_2); 
      startActivity(i); 
     } 
    }); 
} 

И тогда в этой деятельности вы можете включить эти значения, получая их так:

String id = intent.getStringExtra("id"); 
int id = intent.getIntExtra("id",-1); 

, а затем использовать if-elseif-else или switch заявление (ы), чтобы изменить действия на основе прошедшего действия, так что вы можете показать свои сообщения

Чтобы правильно Получать их необходимо установить launchMode активность на "стандарт "because of this bug в AndroidManifest.xml и создать

public static final int ACTION_1 = 1; 
public static final int ACTION_2 = 2; 
public static final int ACTION_NULL = -1; 
public static final String ID_ACTION = "action_id"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    int id = getIntent().getIntExtra(ID_ACTION, -1); 

    if (id == ACTION_NULL) { 
     Log.d("TAG", "id is null"); 
     Toast.makeText(MainActivity.this, "id is null!", Toast.LENGTH_SHORT).show(); 
    } else if (id == ACTION_1) { 
     Log.i("TAG", "ALLOHA! from button 1"); 
     Toast.makeText(MainActivity.this, "Aloha from button 1!", Toast.LENGTH_LONG).show(); 
    } else if (id == ACTION_2) { 
     Log.i("TAG", "Hello from button 2"); 
     Toast.makeText(MainActivity.thi,"Hello from button 2!", Toast.LENGTH_LONG).show(); 
    } 
} 
+0

Вы можете сделать весь сценарий, пожалуйста? У меня не получилось. Просто сделайте это с помощью слишком кнопок, и я сделаю все остальное. –

+1

взгляните пожалуйста:) Вы хотите, чтобы первая активность вашего «намерения» знала, что показывать и передавать ее в MainActivity или Main, будет известно? как на моем примере? – Toumash

+0

Хорошо, я сделал точно так, как вы сказали, но это не печатание тоста! Это просто навигационная система. Хотя я собрал log.d с тостом –

1

в каждом умыслом вы могли бы пройти parameterts

Intent i=new Intent(context,SendMessage.class); 
i.putExtra("KEY_MESSAGE", "Hola amigo"); 

В другой деятельности

Intent i = getIntent(); 
String message = i.getStringExtra("KEY_MESSAGE") 
Toast.make(this,message,Toast.LENGTH_SHORT).show() 
1

Re написать кнопку щелчок слушателя следующим образом:

b1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent i = new Intent(Intentt.this,MainActivity.class); 
     i.putExtra("Data","Hi"); 
     startActivity(i); 
    } 
}); 
b2.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent i = new Intent(Intentt.this,MainActivity.class); 
     i.putExtra("Data","Hello"); 
     startActivity(i); 
    } 
}); 
b3.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent i = new Intent(Intentt.this,MainActivity.class); 
     i.putExtra("Data","Bye"); 
     startActivity(i); 
    } 
}); 
b4.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent i = new Intent(Intentt.this,MainActivity.class); 
     i.putExtra("Data","See you"); 
     startActivity(i); 
    } 
}); 

В вашем MainActivity классе OnCreate метод, вы можете получить доступ к пройденным данным по:

String passedData = getIntent().getStringExtra("Data"); 

вы можете использовать этот passData для отображения на экране.

1

Делают это так:

public class Intentt extends Activity implements View.OnClickListener { 
Button b1,b2,b3,b4; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_intentt); 
    b1 = (Button)findViewById(R.id.button2); 
    b2 = (Button)findViewById(R.id.button3); 
    b3 = (Button)findViewById(R.id.button4); 
    b4 = (Button)findViewById(R.id.button5); 
    b1.setOnClickListener(this); 
    b2.setOnClickListener(this); 
    b3.setOnClickListener(this); 
    b4.setOnClickListener(this); 

    } 

    @Override 
    public void onClick(View v) { 


      switch (v.getId()) { 
       case R.id.button2: 

        Intent i = new Intent(Intentt.this,MainActivity.class); 
        i.putExtra('"STRING_I_NEED"', "Hi"); 
        startActivity(i) 

        break; 
       case R.id.button3: 
        Intent i = new Intent(Intentt.this,MainActivity.class); 
        i.putExtra('"STRING_I_NEED"', "Bye"); 
        startActivity(i) 

        break; 

       case R.id.button4: 

        break; 
        . 
        . 
        . 
      } 
    } 
} 

После этого в вашем mainActivity получить строку, вы послали с:

Bundle extras = getIntent().getExtras(); 
String s = extras.getString("STRING_I_NEED"); 
Смежные вопросы