2016-12-05 10 views
0

私は3つのアクティビティを持っています。 MainActivity、ActivityB、およびActivityC。アクティビティAとBには、両方のアクティビティに2つのボタンのソースとデスティネーションがあります。アクティビティCにはデータのリストがあります。ボタンがクリックされたときに(ソースまたは宛先)活性AからとBの両方活動同じアクティビティを呼び出す複数のインスタンスと複数のアクティビティ

public class MainActivity extends Activity { 

TextView source,destination; 
Button sendSource,sendDestination,btnTob; 
String src,des,activity,checksrc,checkdes; 

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

    source=(TextView)findViewById(R.id.tv_rcvDataA); 
    destination=(TextView)findViewById(R.id.tv_rcvDataAa); 
    sendSource=(Button)findViewById(R.id.btn_sendA); 
    sendDestination=(Button)findViewById(R.id.btn_sendAa); 
    btnTob=(Button)findViewById(R.id.btn_toB); 

    sendSource.setText("source"); 
    sendDestination.setText("destination"); 
    src=sendSource.getText().toString(); 
    des=sendDestination.getText().toString(); 

    activity=getClass().getSimpleName(); 
    sendSource.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent send= new Intent(MainActivity.this,ActivityC.class); 
      send.putExtra("source",src); 
      send.putExtra("Activity",activity); 
      startActivity(send); 
     } 
    }); 
    sendDestination.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent senda= new Intent(MainActivity.this,ActivityC.class); 
      senda.putExtra("destination",des); 
      senda.putExtra("Activity",activity); 
      startActivity(senda); 

     } 
    }); 

    btnTob.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent movetoB= new Intent(MainActivity.this,ActivityB.class); 
      startActivity(movetoB); 
      finish(); 
     } 
    }); }} 

とアクティビティBのコードを以下れるアクティビティAの活動C コードを呼び出していることは今

public class ActivityB extends Activity { 

TextView sourceB,destinationB; 
Button sendSourceB,sendDestinationB; 

String src,des,activity,checksrc,checkdes; 

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

    sourceB=(TextView)findViewById(R.id.tv_rcvDataB); 
    destinationB=(TextView)findViewById(R.id.tv_rcvDataBa); 
    sendSourceB=(Button)findViewById(R.id.btn_sendB); 
    sendDestinationB=(Button)findViewById(R.id.btn_sendDataBa); 
    activity=getClass().getSimpleName(); 

    sendDestinationB.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent senda= new Intent(ActivityB.this,ActivityC.class); 
      senda.putExtra("destination",src); 
      senda.putExtra("Activity",activity); 
      startActivity(senda); 
     } 
    }); 

    sendSourceB.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent send= new Intent(ActivityB.this,ActivityC.class); 
      send.putExtra("source",src); 
      send.putExtra("Activity",activity); 
      startActivity(send); 
     } 
    });}} 

ありますアクティビティをチェックインする方法どのアクティビティがこのアクティビティを呼び出しているかと、どのbuttonclicklistenerがインテントを呼び出しているのか

答えて

0

onCreateまたはそのメソッドがアクティビティ-Cで呼び出された後はいつでも、以下を実行する必要があります。

Intent intent = getIntent(); 
if (intent != null) { 
    String activity = intent.getStringExtra("Activity"); 
    String src = intent.getStringExtra("source"); 
    // Do something with those values 
} 
+0

を私はそれをしたが、それは私が送信することでこれを解決し、私は直接のアクティビティCに行けばクラッシュの代わりに、活動AまたはアクティビティBから行っていましたputExtrasとアクティビティのboolean booleanがtrueの場合、アクティビティはstartActivityforResultによってインテントによって開始されたことを確認しました。else startActivityによって開始されました @jchunchar –

0

Intent.putExtra()でどのような値とアクティビティを決定するための値を送信する必要があります。次に、あなたのアクティビティCに、あなたが受信する必要が

// This is the key for your putExtra 
// you need to create this as global variable. 
public static final String FROM_KEY = "FROM"; 
public static final String ACTIVITY_KEY = "ACTIVITY"; 
public static final boolean IS_FROM_SOURCE = true; 

// This is a sample to send data to Activity C 
// where the activity caller is B and from source 
Intent senda= new Intent(ActivityB.this,ActivityC.class); 
senda.putExtra(FROM_KEY, IS_FROM_SOURCE); 
senda.putExtra(ACTIVITY_KEY,"activity_a"); 

intent.putExtra(THIS_IS_THE_KEY, THIS_IS_YOUR_VALUE); 

のようにあなたはこのようなものを作成する必要があり、あなたがIntent.putExtra()のための最初のパラメータとしてキーを設定する必要があることを覚えておいてくださいインテントエクストラ。 あなたは、活動onCreate()にこのような何か値を得ることができます:

Bundle extras = getIntent().getExtras(); 
boolean from = extras.getBoolean(FROM_KEY); 
String act = extras.getString(ACTIVITY_KEY); 

// do something here if from activity a 
if(act.equals("activity_a")) { 
    if(IS_FROM_SOURCE) { 
    // do something if from source 
    } else { 
    // do something if from destination. 
    } 
} else { // if from activity a 
    if(IS_FROM_SOURCE) { 
    // do something if from source 
    } else { 
    // do something if from destination. 
    } 
} 
+0

ありがとうございました。それは本当に私を大いに助けました。それは素晴らしい説明です@ישואוהבאותך.. –

+0

あなたを歓迎します;)。これが正しい答えなら、これを受け入れられた回答として設定してください。 –

関連する問題