繁体   English   中英

如何从 Android Studio 中的主活动以外的默认活动点击按钮打开链接?

[英]How to Open a link on button click From a Default Activity other than Main Activity in Android Studio?

我正在尝试将链接分配给除主要活动之外的另一个活动中的按钮。 我尝试使用 Intent 和 Uri.parse,但应用程序一直崩溃。 另一方面,如果我在 Main Activity 中的按钮上使用 Intent 和 Uri.pase 它工作正常。 有人可以帮我吗?

这是 MainAcitivity 和“信息”按钮按下它带我到一个新的活动。

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
 Button info;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    info = (Button) findViewById(R.id.info);
    info.setOnClickListener(this);

    SectionsPagerAdapter sectionsPagerAdapter = new 
SectionsPagerAdapter(this, getSupportFragmentManager());
    ViewPager viewPager = findViewById(R.id.view_pager);
    viewPager.setAdapter(sectionsPagerAdapter);
    TabLayout tabs = findViewById(R.id.tabs);
    tabs.setupWithViewPager(viewPager);
}


public void onClick(View view) {
    if (view.getId() == R.id.info) {
        Intent intent = new Intent(".Options");
        startActivity(intent);
    }
 }
}

第二个活动的代码如下:

public class Options extends AppCompatActivity implements View.OnClickListener {
Button button;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    button=(Button)findViewById(R.id.button);
    setContentView(R.layout.activity_options);`
}


public void onClick(View view) {

}

}

我希望在单击选项活动中的按钮时打开一个链接。

您想将一个UrlMainActivity传递给OtherActivity以便用户在点击OtherActivity.Button时将被重定向到它?

如果是,使用Intent传递 Url

class OtherActivity : AppCompatActivity(){
    companion object {
        private const val EXTRA_KEY_URL = "OTHER_DETAIL.EXTRA_KEY_URL"

        fun launch(launcher: Activity, url: String) {
            val intent = Intent(launcher, OtherActivity::class.java)
                    .apply {
                        putExtra(EXTRA_KEY_URL, url)
                    }
            launcher.startActivity(intent)
        }
    }

    private lateinit var url: String

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.other_activity)

        url = intent.getStringExtra("EXTRA_KEY_URL")

        myButton.setOnClickListener {
            // use url here
        }
    }
}

如何从您的MainActivity调用它

val uri = /* your Uri */
val str = uri.toString()
OtherActivity.launch(this, str)

根据您的需要编辑,在 Java 中

public class Options extends AppCompatActivity implements View.OnClickListener {

    private static final String EXTRA_KEY_URL = "OTHER_DETAIL.EXTRA_KEY_URL";

    Button button;
    String url;

    public static void start(final Activity launcher, String url) {
        Intent intent = new Intent(launcher, Options.class);
        intent.putExtra(EXTRA_KEY_URL, url)
        launcher.startActivity(intent);
    }

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_options);

        url = getIntent().getStringExtra("EXTRA_KEY_URL")

        button=(Button)findViewById(R.id.button);
        button.setOnClickListener(this);
    }


    public void onClick(View view) {
        /* use url*/
    }
}

然后,在MainActivity

public void onClick(View view) {
    if (view.getId() == R.id.info) {
        // get your url
        String url = ""; //TODO
        OtherActivity.launch(this, url);
    }
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM