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 回答