【问题标题】:Setting Buttons to Reference Multiple xml layouts设置按钮以引用多个 xml 布局
【发布时间】:2013-03-22 01:14:02
【问题描述】:

我有一个链接不同 xml 布局的按钮栏,但是当我尝试单击其他按钮时,我只能到达其中一个而不能返回到其他。抱歉,提前麻烦了,还是有点新手。这是我在这里的第一篇文章,但经常引用这个网站。提前致谢。

activity_main.xml

   <ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:shrinkColumns="*"  
    android:stretchColumns="*" 
    android:background="#6B1414">
    <TableRow
        android:id="@+id/tableRow1"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent">
        <Button
            android:id="@+id/btn1"
            android:text="@string/Str"
            android:textStyle="bold"
            android:layout_width="0dip"
            android:layout_height="wrap_content" 
            android:padding="18dip"
            android:layout_weight="1" 
            android:background="#424242"
            android:textColor="#ffffff"
            android:gravity="center"/>
        <Button
            android:id="@+id/btn2"
            android:text="@string/Agl"
            android:textStyle="bold"
            android:layout_width="0dip"
            android:layout_height="wrap_content" 
            android:padding="18dip"
            android:layout_weight="1" 
            android:background="#424242"
            android:textColor="#ffffff"
            android:gravity="center"/>
        <Button
            android:id="@+id/btn3"
            android:text="@string/Int"
            android:textStyle="bold" 
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:padding="18dip"
            android:layout_weight="1" 
            android:background="#424242"
            android:textColor="#ffffff"
            android:gravity="center"/>
        <Button
            android:id="@+id/btn4"
            android:text="@string/Misc"
            android:textStyle="bold" 
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            android:background="#424242"
            android:textColor="#ffffff"
            android:padding="18dip"/>
    </TableRow> 

MainActivity.java

    import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

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

        Button btn1 =(Button)findViewById(R.id.btn1);
        Button btn2 =(Button)findViewById(R.id.btn2);
        Button btn3 =(Button)findViewById(R.id.btn3);
        Button btn4 =(Button)findViewById(R.id.btn4);

        btn1.setOnClickListener(new Button.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent myIntent = new Intent();
                myIntent.setAction(Intent.ACTION_VIEW);
                myIntent.setData(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
                setContentView(R.layout.activity_main);
                return;
            }
        });

        btn2.setOnClickListener(new Button.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent myIntent = new Intent();
                myIntent.setAction(Intent.ACTION_VIEW);
                myIntent.setData(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
                setContentView(R.layout.agil_main);
                return;
            }
        });


        btn3.setOnClickListener(new Button.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent myIntent = new Intent();
                myIntent.setAction(Intent.ACTION_VIEW);
                myIntent.setData(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
                setContentView(R.layout.int_main);
                return;
            }
        });


        btn4.setOnClickListener(new Button.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent myIntent = new Intent();
                myIntent.setAction(Intent.ACTION_VIEW);
                myIntent.setData(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
                setContentView(R.layout.misc_main);
                return;
            }
        });

}}

更新。 XML 看起来不错,谢谢。我仍然遇到以前遇到的同样问题。我为每个布局添加了活动,但我仍然遇到同样的问题,即不打算循环浏览布局。每个 java 文件看起来都和这个一样。

MainActivity.java(使用新的 .class Intent 更新)

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

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

    Button btn1 =(Button)findViewById(R.id.btn1);
    Button btn2 =(Button)findViewById(R.id.btn2);
    Button btn3 =(Button)findViewById(R.id.btn3);
    Button btn4 =(Button)findViewById(R.id.btn4);

    btn1.setOnClickListener(new Button.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent myIntent = new Intent();
            myIntent = new Intent(getApplicationContext(), MainActivity.class);
            myIntent.setAction(Intent.ACTION_VIEW);
              myIntent.setData(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
            setContentView(R.layout.activity_main);
            return;
        }
    });

    btn2.setOnClickListener(new Button.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent myIntent = new Intent();
            myIntent = new Intent(getApplicationContext(), MainAgil.class);
            myIntent.setAction(Intent.ACTION_VIEW);
            myIntent.setData(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
            setContentView(R.layout.agil_main);
            return;
        }
    });


    btn3.setOnClickListener(new Button.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent myIntent = new Intent();
            myIntent = new Intent(getApplicationContext(), MainInt.class);
            myIntent.setAction(Intent.ACTION_VIEW);
            myIntent.setData(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
            setContentView(R.layout.int_main);
            return;
        }
    });


    btn4.setOnClickListener(new Button.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent myIntent = new Intent();
            myIntent = new Intent(getApplicationContext(), MainMisc.class);
            myIntent.setAction(Intent.ACTION_VIEW);
            myIntent.setData(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
            setContentView(R.layout.misc_main);
            return;
        }
    });

}}

【问题讨论】:

    标签: android eclipse button


    【解决方案1】:

    在单独的 XML 布局中定义您的按钮栏。在每个 XML 中,您需要该栏包括使用 &lt;include/&gt; 标记的按钮栏。在每个包含 XML 的活动中,您都包含按钮栏,分别处理按钮的 onclick。

    【讨论】:

    • 谢谢先生。我将 函数添加到我的所有 XML 布局中。它使我的代码效率更高,但我仍然遇到同样的问题,当我单击一个按钮时,我可以进入不同的 XML 布局,但它卡在那个布局上。
    • 您能更清楚地描述您的问题吗?您面临的具体问题是什么?
    • 布局很好,我可以单击任何按钮,例如,btn3 会将我带到正确的布局,但是当我尝试单击 btn 1、btn2 和/或 btn4 时,它会停留在相关的布局上与btn3。我认为这与 OnClick(View v) 中的“返回”有关,但我玩弄了它,遗憾的是无济于事。
    • 而不是改变布局开始新的活动。您正在处理单个活动中的所有布局。在不同的活动中将它们分开
    猜你喜欢
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 2014-07-25
    • 2012-11-17
    • 2017-06-28
    相关资源
    最近更新 更多