2017-07-06 6 views
0

私のコードは次のとおり活性()メソッド

TableActivity.java

public class TableActivity extends AppCompatActivity { 

@Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_table_selection); 
     itemName = (TextView) findViewById(R.id.itemName); 
     foodMenuLayout = (LinearLayout) findViewById(R.id.foodMenuLayout); 
     drinkMenuLayout = (LinearLayout) findViewById(R.id.drinksMenuLayout); 
     tableNo = (TextView) findViewById(R.id.tableNo); 
     foodMenu = (TextView) findViewById(R.id.foodMenu); 
     drinksMenu = (TextView) findViewById(R.id.drinksMenu); 
     tapLayout = (LinearLayout) findViewById(R.id.tapLayout); 
     foodImage = (ImageView) findViewById(R.id.foodImage); 
     drinkImage = (ImageView) findViewById(R.id.drinkImage); 

     getFoodTruckInfo(); 

     tapLayout.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       tableList = TableList.getInstance(MyCart.getInstance().getTableNo()); 
       tableList.setItemListener(TableActivity.this); 
       tableList.setCancelable(false); 
       tableList.show(getSupportFragmentManager(), null); 
      } 
     }); 

     setFontStyle(); 

     foodMenuLayout.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (TextUtils.isEmpty(tableNo.getText().toString().trim())) { 
        Toast.makeText(TableActivity.this, "Please select table", Toast.LENGTH_SHORT).show(); 
       } else { 
        lauchItemActivity(); 
       } 
      } 
     }); 

     drinkMenuLayout.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (TextUtils.isEmpty(tableNo.getText().toString().trim())) { 
        Toast.makeText(TableActivity.this, "Please select table", Toast.LENGTH_SHORT).show(); 
       } else { 
        lauchDrinksActivity(); 
       } 
      } 
     }); 
    } 

    private void lauchItemActivity() { 
     FoodtruckInfo foodtruckInfo = new FoodtruckInfo(); 
     foodtruckInfo.setFoodTruckName(foodTruck.getFoodTruckName()); 
     foodtruckInfo.setFoodTruckImage(foodTruck.getFoodTruckLogo()); 
     foodtruckInfo.setFoodTruckId(foodTruck.getFoodTruckId()); 
     foodtruckInfo.setOrderStatus(foodTruck.getFoodTruckOpenStatus()); 
     Intent intent = new Intent(TableActivity.this, FoodTruckItemsActivity.class); 
     intent.putExtra(Consts.FOODTRUCK_INFO, foodtruckInfo); 
     intent.putExtra(Consts.IS_SEARCH, false); 
     intent.putExtra(Consts.IS_DRINKS, false); 
     intent.putParcelableArrayListExtra(Consts.FOODTRUCK_ITEM, (ArrayList<? extends Parcelable>) foodTruck.getFoodTruckItemList()); 

     startActivityForResult(intent, Consts.ITEMS_ACTIVITY); 
    } 


    private void lauchDrinksActivity() { 
     FoodtruckInfo foodtruckInfo = new FoodtruckInfo(); 
     foodtruckInfo.setFoodTruckName(foodTruck.getFoodTruckName()); 
     foodtruckInfo.setFoodTruckImage(foodTruck.getFoodTruckLogo()); 
     foodtruckInfo.setFoodTruckId(foodTruck.getFoodTruckId()); 
     foodtruckInfo.setOrderStatus(foodTruck.getFoodTruckOpenStatus()); 
     Intent intent = new Intent(TableActivity.this, FoodTruckDrinksActivity.class); 
     intent.putExtra(Consts.FOODTRUCK_INFO, foodtruckInfo); 
     intent.putExtra(Consts.IS_SEARCH, false); 
     intent.putExtra(Consts.IS_DRINKS, true); 
     intent.putParcelableArrayListExtra(Consts.FOODTRUCK_ITEM, (ArrayList<? extends Parcelable>) foodTruck.getFoodTruckDrinkList()); 
     startActivityForResult(intent, Consts.DRINKS_ACTIVITY); 
    } 
@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (resultCode == Activity.RESULT_OK) { 
      if (requestCode == Consts.ITEMS_ACTIVITY) { 
       lauchDrinksActivity(); 
      } else if (requestCode == Consts.DRINKS_ACTIVITY) { 
       lauchItemActivity(); 
      } 
     } 
    } 
} 

FoodTruckItemsActivity.java

public class FoodTruckItemsActivity extends AppCompatActivity implements 
     FoodTruckItemsAdapter.OnItemClickListener, FoodTruckItemFragment.FoodTruckItemListener, 
     ViewPager.OnPageChangeListener, View.OnClickListener { 


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

routeView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       routeToAnotherMenu(); 
      } 
     }); 
    } 

private void routeToAnotherMenu() { 
     setResult(Activity.RESULT_OK); 

    } 
} 

FoodTruckItemsActivity.javaFoodTruckDrinksActivity.javaは同一です。だから、私がここで欲しいのは、routeViewを押すと、FoodTruckItemsActivity.javaからFoodTruckDrinksActivity.javaに、またはその逆に切り替える必要があります。 そのために私はrouteToAnotherMenu()メソッドを書いています。ここで問題となるのは、をrouteToAnotherMenuの中に書き込まないと、別のアクティビティがロードされないということです。しかし、私がsetResult()の後に仕上げを書くと、それは完璧に動作します。

なぜ私はデータを消去するので、そのメソッド内でfinish()を使用しないのが主な理由です。それで、finish()メソッドを書かずにそれを行う方法はありますか?

+0

また、マニフェストファイルを –

+0

に投稿すると、なぜstartActivityForResult()が使用されているのですか。あなたはstartActivity();を使ってこれを簡単な方法で呼び出すことができます –

+0

@AniruddhPariharアクティビティの結果をトラッキングしたいと思います。 –

答えて

1

他のアクティビティを開始する前に、またはこのアクティビティを起動したアクティビティで、終了後に結果を収集するようにしたい場合は、setResult()を使用する必要があります。

1)あなたがフィニッシュ(後mantainしたい「データを」デカップリング)(例えば、シングルトンへの)現在の活動から:Here is a link to docs

私はあなたが達成したい結果のための2つの方法を想像できます。 FoodTruckItemsActivity.javaとFoodTruckDrinksActivity.javaがほぼ同じ場合、共通の親から継承する必要があるため、作業を楽にします。 "TableActivity"は毎回常に新しいインテントを開始するため、フィニッシュを呼び出さないと無駄です。

2)FoodTruckItemsActivityとFoodTruckDrinksActivityをフラグメントに変換するアプローチを変更し、それらを「TableActivity」のフラグメントコンテナにスワップし、そのデータをアクティビティに共有することもできます。 onActivityResult()のためのドキュメントから

1

活動はあなたが終了を立ち上げたときに呼び出され

(...)

ただ、結果を設定するメソッドが呼び出されることはありません。

画面間で自由に切り替える場合は、フラグメントを使用することを検討する必要がありますか?あなたのケースでは

1

FoodTruckItemActivityはあなたFoodTruckDrinkActivityを開いて、そこから共通の活動です。

ここで、たとえば、TableActivityのArrayListを宣言して、選択したすべてのデータをそのarrayListに格納します。

Now FoodTruckItemsActivityのためのActivityForResult()を開始するとき。 FoodTruckItemsActivityでは、データを追加するためのArrayListを宣言します。今度は別のメニューに書き込むときにこれを書いてください。

Intent intent=new Intent(); 
intent.putStringArrayList("FOODITEMLIST", myItemList); 
setResult(intent); 
finish(); 

ここで、結果はonActivityResultになります。