1

同じアクティビティで文字列を渡すにはどうすればよいですか? 多くのボタンがあるので、open()??? で getstring を使用しました。すべて同じアクティビティで..このアクティビティでは、別のアクティビティのインテントを使用してパス文字列を既に使用しています。

View view1 = findViewById(R.id.v1);
view1.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {

            Bundle i = new Bundle();
            i.putString("key1", title1); // Key1
            i.putString("key2", link1); // Key2
            open();
        }
    });

View viewnowvideo= findViewById(R.id.tvnowvideo);
viewnowvideo.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
            Bundle i = new Bundle();
            i.putString("key1", title2); // Key1
            i.putString("key2", link2);  // Key2
            open();
             }
    });
}

private void open() {
Bundle i = new Bundle();
String titleok = i.getString("key1"); //// Key1

final Dialog dialog = new Dialog(this);
    dialog.requestWindowFeature(Window.FEATURE_LEFT_ICON);
    dialog.setTitle(titleok);
    dialog.setContentView(R.layout.popup);
    Button button = (Button) dialog.findViewById(R.id.open2);
    button.setOnClickListener(new OnClickListener() {
    @Override
        public void onClick(View v) {
        Bundle i = new Bundle();
        String linkok = i.getString("key2"); //// Key2
        Uri location = Uri.parse(linkok);
        Intent intent = new Intent(Intent.ACTION_VIEW, location);
        intent.setPackage("com.dfgfdg.dfgdfg");
        startActivity(intent);

        }
    });
  }
4

3 に答える 3

3

この行をクラス レベルで宣言するだけString titleok = i.getString("key1"); //// Key1で、同じアクティビティで何度も渡す必要はありません。

これは基本的に変数スコープとして知られています。クラスレベルで変数を宣言すると、すべてのメソッドと内部クラスで簡単に使用できます。

例、

public class myClass
{
    private String hello="I am available to whole class";

    private void test()
    {
         System.out.println ( hello );
    }

    private class myInnerclass
    {
         private void innnerMethod()
         {
             System.out.println ( hello );  // direct accessible from outer class
         }
    }
}
于 2013-03-28T10:11:58.740 に答える
1

メソッドにBundle引数を追加するだけです。open()

private void open(Bundle args) {
   String titleOk = args.getString("key1");
   ...
}
于 2013-03-28T10:16:46.543 に答える
0

オープン メソッドでは、バンドルを渡してそのバンドルをオープン メソッド バンドルに割り当てることができると思います。

  class MainActivity extends Activity{
   Bundle bundle;
   public void onCreate(Bundle savedInstanceState) {
  bundle=new Bundle();   
  View view1 = findViewById(R.id.v1);
  view1.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View view) {


        bundle.putString("key1", title1); // Key1
        bundle.putString("key2", link1); // Key2
        open();
    }
   });

 View viewnowvideo= findViewById(R.id.tvnowvideo);
  viewnowvideo.setOnClickListener(new View.OnClickListener() {
   @Override
 public void onClick(View view) {

        bundle.putString("key1", title2); // Key1
        bundle.putString("key2", link2);  // Key2
        open();
         }
});
}

 private void open() {

String titleok = bundle.getString("key1"); //// Key1

final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_LEFT_ICON);
dialog.setTitle(titleok);
dialog.setContentView(R.layout.popup);
Button button = (Button) dialog.findViewById(R.id.open2);
button.setOnClickListener(new OnClickListener() {
@Override
    public void onClick(View v) {

    String linkok = bundle.getString("key2"); //// Key2
    Uri location = Uri.parse(linkok);
    Intent intent = new Intent(Intent.ACTION_VIEW, location);
    intent.setPackage("com.dfgfdg.dfgdfg");
    startActivity(intent);

    }
});

}

于 2013-03-28T10:18:17.610 に答える