【问题标题】:XML Parser Android - Calling New ActivityXML Parser Android - 调用新活动
【发布时间】:2014-04-19 17:27:58
【问题描述】:

我有一个关于 android 中的 xml 解析器的问题。我在 xml 中创建按钮信息。我得到它的高度、宽度、颜色等。我正在创建一个函数中的所有按钮。现在我想做以下事情。当我单击按钮时,会打开新的 android 页面。据我所知,我将通过创建新活动来做到这一点。

btn.setOnClickListener(new View.OnClickListener() { 
                public void onClick(View v) {
                      Intent i=new Intent(MainActivity.this,MainActivity2.class);
                      startActivity(i);

                }
            });

我在我创建所有按钮的函数上写这个。当我这样做时它不起作用。有人可以帮助我吗?

【问题讨论】:

  • 它不工作怎么办?它什么都不做或应用程序崩溃?如果是这样,您可以发布它给您的错误吗?

标签: android xml parsing android-activity


【解决方案1】:

在您的活动中:

public class MainActivity extends Activity {

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

        View btnTapOnMe = findViewById(R.id.btnTapOnMe);
        btnTapOnMe.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i=new Intent(MainActivity.this,MainActivity2.class);
                startActivity(i);
            }
        });
   }
}

view_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/btnTapOnMe"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Tap on Me" />

</RelativeLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.yourpackage"
          android:versionCode="1"
          android:versionName="1.0">

    <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="19"/>

    <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme">

        <activity
                android:name="com.yourpackage.MainActivity"
                android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

        <activity android:name="com.yourpackage.MainActivity2"/>


    </application>

</manifest>

应该像魅力一样工作

更新:

永远不要使用AbsoluteLayout it is deprecated

此类在 API 级别 3 中已弃用。 请改用 FrameLayout、RelativeLayout 或自定义布局。

首先将其更改为框架或相对布局。

这是我在下面的示例中得到的:

public class MainActivity extends FragmentActivity {

    public void AddAllButtons() {
        AbsoluteLayout Layout = (AbsoluteLayout) findViewById(R.id.layout1);
        Button btn = new Button(this);
        btn.setText("Test case");
        Layout.addView(btn);
        AbsoluteLayout.LayoutParams absParams = (AbsoluteLayout.LayoutParams) btn.getLayoutParams();
        absParams.x = 100;
        absParams.y = 100;
        absParams.width = 150;
        btn.setLayoutParams(absParams);
        btn.setBackgroundColor(Color.GREEN);

        btn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this, SearchActivity.class);
                startActivity(i);
            }
        });
    }

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


        AddAllButtons();
    }
}

这里是 xml 文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingBottom="@dimen/activity_vertical_margin"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:paddingTop="@dimen/activity_vertical_margin"
                tools:context=".MainActivity">

    <Button
            android:id="@+id/btnTapOnMe"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Tap on Me"/>

    <AbsoluteLayout
            android:id="@+id/layout1"
            android:layout_below="@+id/btnTapOnMe"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

    </AbsoluteLayout>

</RelativeLayout>

【讨论】:

  • 我编辑了 manifest.xml 但我正在从 xml 文件加载数据
  • 你正在加载什么数据?你能把你的问题说得更清楚吗?你不能做什么?也许您可以向我们展示完整的活动来源以及 xml 文件
  • 我正在从 xml 加载按钮信息,单击每个按钮时有多个按钮我需要不同的活动。
  • 我在一个函数中创建这个按钮
  • 在函数内部我写这个: btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent i=new Intent(MainActivity.this,MainActivity2.class); startActivity(i); } });
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多